Commit 4a2376ef authored by David Chase's avatar David Chase

cmd/compile: skip ssa/debug_test.go when gdb missing etc.

CL50610 broke the build for noopt (different inlining
behavior) and clang (no gdb) so it needs to catch those
cases and skip.

The run/no-run logic was slightly cleaned up,
the name of gdb on OSX was made more robust (tries gdb
first, then ggdb), and the file names were canonicalized
before loggging instead of in comparison to reduce
gratuitous noise in diffs when things aren't otherwise
equal.

This probably doesn't fix problems on Alpine, but it should
provide a cleaner and less confusing failure.

Change-Id: I26c65bff5a8d3d60f1cd6ae02a282558c53dda67
Reviewed-on: https://go-review.googlesource.com/69371
Run-TryBot: David Chase <drchase@google.com>
Reviewed-by: default avatarKeith Randall <khr@golang.org>
parent 6f5ede8b
...@@ -32,6 +32,8 @@ var hexRe = regexp.MustCompile("0x[a-zA-Z0-9]+") ...@@ -32,6 +32,8 @@ var hexRe = regexp.MustCompile("0x[a-zA-Z0-9]+")
var numRe = regexp.MustCompile("-?[0-9]+") var numRe = regexp.MustCompile("-?[0-9]+")
var stringRe = regexp.MustCompile("\"([^\\\"]|(\\.))*\"") var stringRe = regexp.MustCompile("\"([^\\\"]|(\\.))*\"")
var gdb = "gdb" // Might be "ggdb" on Darwin, because gdb no longer part of XCode
// TestNexting go-builds a file, then uses a debugger (default gdb, optionally delve) // TestNexting go-builds a file, then uses a debugger (default gdb, optionally delve)
// to next through the generated executable, recording each line landed at, and // to next through the generated executable, recording each line landed at, and
// then compares those lines with reference file(s). // then compares those lines with reference file(s).
...@@ -56,28 +58,54 @@ var stringRe = regexp.MustCompile("\"([^\\\"]|(\\.))*\"") ...@@ -56,28 +58,54 @@ var stringRe = regexp.MustCompile("\"([^\\\"]|(\\.))*\"")
// go test debug_test.go -args -u // go test debug_test.go -args -u
// (for Delve) // (for Delve)
// go test debug_test.go -args -u -d // go test debug_test.go -args -u -d
func TestNexting(t *testing.T) { func TestNexting(t *testing.T) {
testenv.MustHaveGoBuild(t) testenv.MustHaveGoBuild(t)
testNexting(t, "hist", "dbg", "-N -l")
testNexting(t, "hist", "opt", "")
}
func testNexting(t *testing.T, base, tag, gcflags string) {
// (1) In testdata, build sample.go into sample
// (2) Run debugger gathering a history
// (3) Read expected history from testdata/sample.nexts
// optionally, write out testdata/sample.nexts
if !*delve && !*force && !(runtime.GOOS == "linux" && runtime.GOARCH == "amd64") { if !*delve && !*force && !(runtime.GOOS == "linux" && runtime.GOARCH == "amd64") {
// Running gdb on OSX/darwin is very flaky. // Running gdb on OSX/darwin is very flaky.
// Sometimes it is called ggdb, depending on how it is installed.
// It also probably requires an admin password typed into a dialog box. // It also probably requires an admin password typed into a dialog box.
// Various architectures tend to differ slightly sometimes, and keeping them // Various architectures tend to differ slightly sometimes, and keeping them
// all in sync is a pain for people who don't have them all at hand, // all in sync is a pain for people who don't have them all at hand,
// so limit testing to amd64 (for now) // so limit testing to amd64 (for now)
t.Skip() t.Skip("Skipped unless -d (delve), -f (force), or linux-amd64")
} }
if *delve {
_, err := exec.LookPath("dlv")
if err != nil {
t.Fatal("dlv specified on command line with -d but no dlv on path")
}
} else {
_, err := exec.LookPath(gdb)
if err != nil {
if runtime.GOOS != "darwin" {
t.Skip("Skipped because gdb not available")
}
_, err = exec.LookPath("ggdb")
if err != nil {
t.Skip("Skipped because gdb (and also ggdb) not available")
}
gdb = "ggdb"
}
}
testNexting(t, "hist", "dbg", "-N -l")
// If this is test is run with a runtime compiled with -N -l, it is very likely to fail.
// This occurs in the noopt builders (for example).
if gogcflags := os.Getenv("GO_GCFLAGS"); *force || !strings.Contains(gogcflags, "-N") && !strings.Contains(gogcflags, "-l") {
testNexting(t, "hist", "opt", "")
}
}
func testNexting(t *testing.T, base, tag, gcflags string) {
// (1) In testdata, build sample.go into sample
// (2) Run debugger gathering a history
// (3) Read expected history from testdata/sample.nexts
// optionally, write out testdata/sample.nexts
exe := filepath.Join("testdata", base) exe := filepath.Join("testdata", base)
logbase := exe + "-" + tag logbase := exe + "-" + tag
tmpbase := logbase + "-test" tmpbase := logbase + "-test"
...@@ -300,10 +328,6 @@ func (h *nextHist) addVar(text string) { ...@@ -300,10 +328,6 @@ func (h *nextHist) addVar(text string) {
func invertMapSU8(hf2i map[string]uint8) map[uint8]string { func invertMapSU8(hf2i map[string]uint8) map[uint8]string {
hi2f := make(map[uint8]string) hi2f := make(map[uint8]string)
for hs, i := range hf2i { for hs, i := range hf2i {
hsi := strings.Index(hs, "/src/")
if hsi != -1 {
hs = hs[hsi+1:]
}
hi2f[i] = hs hi2f[i] = hs
} }
return hi2f return hi2f
...@@ -333,6 +357,14 @@ func (h *nextHist) equals(k *nextHist) bool { ...@@ -333,6 +357,14 @@ func (h *nextHist) equals(k *nextHist) bool {
return true return true
} }
func canonFileName(f string) string {
i := strings.Index(f, "/src/")
if i != -1 {
f = f[i+1:]
}
return f
}
/* Delve */ /* Delve */
type delveState struct { type delveState struct {
...@@ -371,14 +403,15 @@ func (s *delveState) stepnext(ss string) bool { ...@@ -371,14 +403,15 @@ func (s *delveState) stepnext(ss string) bool {
excerpt = excerpts[1] excerpt = excerpts[1]
} }
if len(locations) > 0 { if len(locations) > 0 {
fn := canonFileName(locations[2])
if *verbose { if *verbose {
if s.file != locations[2] { if s.file != fn {
fmt.Printf("%s\n", locations[2]) fmt.Printf("%s\n", locations[2]) // don't canonocalize verbose logging
} }
fmt.Printf(" %s\n", locations[3]) fmt.Printf(" %s\n", locations[3])
} }
s.line = locations[3] s.line = locations[3]
s.file = locations[2] s.file = fn
s.function = locations[1] s.function = locations[1]
s.ioState.history.add(s.file, s.line, excerpt) s.ioState.history.add(s.file, s.line, excerpt)
return true return true
...@@ -427,11 +460,8 @@ type gdbState struct { ...@@ -427,11 +460,8 @@ type gdbState struct {
} }
func newGdb(tag, executable string, args ...string) dbgr { func newGdb(tag, executable string, args ...string) dbgr {
gdb := "gdb" // Turn off shell, necessary for Darwin apparently
if runtime.GOOS == "darwin" { cmd := exec.Command(gdb, "-ex", "set startup-with-shell off", executable)
gdb = "ggdb" // A possibility on a Mac
}
cmd := exec.Command(gdb, executable)
cmd.Env = replaceEnv(cmd.Env, "TERM", "dumb") cmd.Env = replaceEnv(cmd.Env, "TERM", "dumb")
s := &gdbState{tag: tag, cmd: cmd, args: args} s := &gdbState{tag: tag, cmd: cmd, args: args}
s.atLineRe = regexp.MustCompile("(^|\n)([0-9]+)(.*)") s.atLineRe = regexp.MustCompile("(^|\n)([0-9]+)(.*)")
...@@ -479,14 +509,15 @@ func (s *gdbState) stepnext(ss string) bool { ...@@ -479,14 +509,15 @@ func (s *gdbState) stepnext(ss string) bool {
excerpt = excerpts[3] excerpt = excerpts[3]
} }
if len(locations) > 0 { if len(locations) > 0 {
fn := canonFileName(locations[2])
if *verbose { if *verbose {
if s.file != locations[2] { if s.file != fn {
fmt.Printf("%s\n", locations[2]) fmt.Printf("%s\n", locations[2])
} }
fmt.Printf(" %s\n", locations[3]) fmt.Printf(" %s\n", locations[3])
} }
s.line = locations[3] s.line = locations[3]
s.file = locations[2] s.file = fn
s.function = locations[1] s.function = locations[1]
s.ioState.history.add(s.file, s.line, excerpt) s.ioState.history.add(s.file, s.line, excerpt)
} }
......
./testdata/hist.go ./testdata/hist.go
35: func main() { 35: func main() {
36: hist := make([]int, 100) 36: hist := make([]int, 10)
37: var reader io.Reader = strings.NewReader(cannedInput) //gdb-dbg=(hist/A,cannedInput/A) 37: var reader io.Reader = strings.NewReader(cannedInput) //gdb-dbg=(hist/A,cannedInput/A)
38: if len(os.Args) > 1 { 38: if len(os.Args) > 1 {
43: return 43: return
...@@ -106,278 +106,8 @@ ...@@ -106,278 +106,8 @@
60: if a == 0 { 60: if a == 0 {
61: continue 61: continue
59: for i, a := range hist { 59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
68: } 68: }
/usr/local/google/home/drchase/work/go/src/runtime/proc.go src/runtime/proc.go
201: if atomic.Load(&runningPanicDefers) != 0 { 201: if atomic.Load(&runningPanicDefers) != 0 {
210: if atomic.Load(&panicking) != 0 { 210: if atomic.Load(&panicking) != 0 {
214: exit(0) 214: exit(0)
/usr/local/google/home/drchase/work/go/src/cmd/compile/internal/ssa/testdata/hist.go src/cmd/compile/internal/ssa/testdata/hist.go
35: func main() { 35: func main() {
35: func main() { 35: func main() {
36: hist := make([]int, 100) 36: hist := make([]int, 10)
37: var reader io.Reader = strings.NewReader(cannedInput) //gdb-dbg=(hist/A,cannedInput/A) 37: var reader io.Reader = strings.NewReader(cannedInput) //gdb-dbg=(hist/A,cannedInput/A)
$1 = {array = <A>, len = 100, cap = 100} $1 = []int = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
$2 = <A> "1\n1\n1\n1\n2\n2\n2\n4\n4\n8\n" $2 = "1\n1\n1\n1\n2\n2\n2\n4\n4\n8\n"
38: if len(os.Args) > 1 { 38: if len(os.Args) > 1 {
43: return 43: return
47: for scanner.Scan() { 47: for scanner.Scan() {
...@@ -131,278 +131,8 @@ $24 = 26 ...@@ -131,278 +131,8 @@ $24 = 26
60: if a == 0 { 60: if a == 0 {
61: continue 61: continue
59: for i, a := range hist { 59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
60: if a == 0 {
61: continue
59: for i, a := range hist {
68: } 68: }
/usr/local/google/home/drchase/work/go/src/runtime/proc.go src/runtime/proc.go
201: if atomic.Load(&runningPanicDefers) != 0 { 201: if atomic.Load(&runningPanicDefers) != 0 {
201: if atomic.Load(&runningPanicDefers) != 0 { 201: if atomic.Load(&runningPanicDefers) != 0 {
210: if atomic.Load(&panicking) != 0 { 210: if atomic.Load(&panicking) != 0 {
......
./testdata/hist.go ./testdata/hist.go
35: func main() { 35: func main() {
36: hist := make([]int, 100) 36: hist := make([]int, 10)
37: var reader io.Reader = strings.NewReader(cannedInput) //gdb-dbg=(hist/A,cannedInput/A) 37: var reader io.Reader = strings.NewReader(cannedInput) //gdb-dbg=(hist/A,cannedInput/A)
13: "strings" 13: "strings"
/usr/local/google/home/drchase/work/go/src/strings/reader.go src/strings/reader.go
150: func NewReader(s string) *Reader { return &Reader{s, 0, -1} } 150: func NewReader(s string) *Reader { return &Reader{s, 0, -1} }
./testdata/hist.go ./testdata/hist.go
38: if len(os.Args) > 1 { 38: if len(os.Args) > 1 {
8: "bufio" 8: "bufio"
/usr/local/google/home/drchase/work/go/src/bufio/scan.go src/bufio/scan.go
84: split: ScanLines, 84: split: ScanLines,
74: MaxScanTokenSize = 64 * 1024 74: MaxScanTokenSize = 64 * 1024
./testdata/hist.go ./testdata/hist.go
47: for scanner.Scan() { 47: for scanner.Scan() {
47: for scanner.Scan() { 47: for scanner.Scan() {
/usr/local/google/home/drchase/work/go/src/bufio/scan.go src/bufio/scan.go
107: return string(s.token) 107: return string(s.token)
./testdata/hist.go ./testdata/hist.go
49: i, err := strconv.ParseInt(s, 10, 64) 49: i, err := strconv.ParseInt(s, 10, 64)
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
55: hist[int(i)]++ 55: hist[int(i)]++
55: hist[int(i)]++ 55: hist[int(i)]++
47: for scanner.Scan() { 47: for scanner.Scan() {
/usr/local/google/home/drchase/work/go/src/bufio/scan.go src/bufio/scan.go
107: return string(s.token) 107: return string(s.token)
./testdata/hist.go ./testdata/hist.go
49: i, err := strconv.ParseInt(s, 10, 64) 49: i, err := strconv.ParseInt(s, 10, 64)
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
55: hist[int(i)]++ 55: hist[int(i)]++
55: hist[int(i)]++ 55: hist[int(i)]++
47: for scanner.Scan() { 47: for scanner.Scan() {
/usr/local/google/home/drchase/work/go/src/bufio/scan.go src/bufio/scan.go
107: return string(s.token) 107: return string(s.token)
./testdata/hist.go ./testdata/hist.go
49: i, err := strconv.ParseInt(s, 10, 64) 49: i, err := strconv.ParseInt(s, 10, 64)
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
55: hist[int(i)]++ 55: hist[int(i)]++
55: hist[int(i)]++ 55: hist[int(i)]++
47: for scanner.Scan() { 47: for scanner.Scan() {
/usr/local/google/home/drchase/work/go/src/bufio/scan.go src/bufio/scan.go
107: return string(s.token) 107: return string(s.token)
./testdata/hist.go ./testdata/hist.go
49: i, err := strconv.ParseInt(s, 10, 64) 49: i, err := strconv.ParseInt(s, 10, 64)
...@@ -50,7 +50,7 @@ ...@@ -50,7 +50,7 @@
55: hist[int(i)]++ 55: hist[int(i)]++
55: hist[int(i)]++ 55: hist[int(i)]++
47: for scanner.Scan() { 47: for scanner.Scan() {
/usr/local/google/home/drchase/work/go/src/bufio/scan.go src/bufio/scan.go
107: return string(s.token) 107: return string(s.token)
./testdata/hist.go ./testdata/hist.go
49: i, err := strconv.ParseInt(s, 10, 64) 49: i, err := strconv.ParseInt(s, 10, 64)
...@@ -59,7 +59,7 @@ ...@@ -59,7 +59,7 @@
55: hist[int(i)]++ 55: hist[int(i)]++
55: hist[int(i)]++ 55: hist[int(i)]++
47: for scanner.Scan() { 47: for scanner.Scan() {
/usr/local/google/home/drchase/work/go/src/bufio/scan.go src/bufio/scan.go
107: return string(s.token) 107: return string(s.token)
./testdata/hist.go ./testdata/hist.go
49: i, err := strconv.ParseInt(s, 10, 64) 49: i, err := strconv.ParseInt(s, 10, 64)
...@@ -68,7 +68,7 @@ ...@@ -68,7 +68,7 @@
55: hist[int(i)]++ 55: hist[int(i)]++
55: hist[int(i)]++ 55: hist[int(i)]++
47: for scanner.Scan() { 47: for scanner.Scan() {
/usr/local/google/home/drchase/work/go/src/bufio/scan.go src/bufio/scan.go
107: return string(s.token) 107: return string(s.token)
./testdata/hist.go ./testdata/hist.go
49: i, err := strconv.ParseInt(s, 10, 64) 49: i, err := strconv.ParseInt(s, 10, 64)
...@@ -77,7 +77,7 @@ ...@@ -77,7 +77,7 @@
55: hist[int(i)]++ 55: hist[int(i)]++
55: hist[int(i)]++ 55: hist[int(i)]++
47: for scanner.Scan() { 47: for scanner.Scan() {
/usr/local/google/home/drchase/work/go/src/bufio/scan.go src/bufio/scan.go
107: return string(s.token) 107: return string(s.token)
./testdata/hist.go ./testdata/hist.go
49: i, err := strconv.ParseInt(s, 10, 64) 49: i, err := strconv.ParseInt(s, 10, 64)
...@@ -86,7 +86,7 @@ ...@@ -86,7 +86,7 @@
55: hist[int(i)]++ 55: hist[int(i)]++
55: hist[int(i)]++ 55: hist[int(i)]++
47: for scanner.Scan() { 47: for scanner.Scan() {
/usr/local/google/home/drchase/work/go/src/bufio/scan.go src/bufio/scan.go
107: return string(s.token) 107: return string(s.token)
./testdata/hist.go ./testdata/hist.go
49: i, err := strconv.ParseInt(s, 10, 64) 49: i, err := strconv.ParseInt(s, 10, 64)
...@@ -95,7 +95,7 @@ ...@@ -95,7 +95,7 @@
55: hist[int(i)]++ 55: hist[int(i)]++
55: hist[int(i)]++ 55: hist[int(i)]++
47: for scanner.Scan() { 47: for scanner.Scan() {
/usr/local/google/home/drchase/work/go/src/bufio/scan.go src/bufio/scan.go
107: return string(s.token) 107: return string(s.token)
./testdata/hist.go ./testdata/hist.go
49: i, err := strconv.ParseInt(s, 10, 64) 49: i, err := strconv.ParseInt(s, 10, 64)
...@@ -151,98 +151,8 @@ ...@@ -151,98 +151,8 @@
59: for i, a := range hist { 59: for i, a := range hist {
65: fmt.Fprintf(os.Stderr, "%d\t%d\t%d\t%d\t%d\n", i, a, n, i*a, t) //gdb-dbg=(n,i,t) 65: fmt.Fprintf(os.Stderr, "%d\t%d\t%d\t%d\t%d\n", i, a, n, i*a, t) //gdb-dbg=(n,i,t)
60: if a == 0 { 60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
68: } 68: }
/usr/local/google/home/drchase/work/go/src/runtime/proc.go src/runtime/proc.go
201: if atomic.Load(&runningPanicDefers) != 0 { 201: if atomic.Load(&runningPanicDefers) != 0 {
210: if atomic.Load(&panicking) != 0 { 210: if atomic.Load(&panicking) != 0 {
214: exit(0) 214: exit(0)
/usr/local/google/home/drchase/work/go/src/cmd/compile/internal/ssa/testdata/hist.go src/cmd/compile/internal/ssa/testdata/hist.go
35: func main() { 35: func main() {
35: func main() { 35: func main() {
36: hist := make([]int, 100) 36: hist := make([]int, 10)
37: var reader io.Reader = strings.NewReader(cannedInput) //gdb-dbg=(hist/A,cannedInput/A) 37: var reader io.Reader = strings.NewReader(cannedInput) //gdb-dbg=(hist/A,cannedInput/A)
13: "strings" 13: "strings"
150: func NewReader(s string) *Reader { return &Reader{s, 0, -1} } 150: func NewReader(s string) *Reader { return &Reader{s, 0, -1} }
...@@ -117,98 +117,8 @@ ...@@ -117,98 +117,8 @@
59: for i, a := range hist { 59: for i, a := range hist {
65: fmt.Fprintf(os.Stderr, "%d\t%d\t%d\t%d\t%d\n", i, a, n, i*a, t) //gdb-dbg=(n,i,t) 65: fmt.Fprintf(os.Stderr, "%d\t%d\t%d\t%d\t%d\n", i, a, n, i*a, t) //gdb-dbg=(n,i,t)
60: if a == 0 { 60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
60: if a == 0 {
68: } 68: }
/usr/local/google/home/drchase/work/go/src/runtime/proc.go src/runtime/proc.go
201: if atomic.Load(&runningPanicDefers) != 0 { 201: if atomic.Load(&runningPanicDefers) != 0 {
201: if atomic.Load(&runningPanicDefers) != 0 { 201: if atomic.Load(&runningPanicDefers) != 0 {
210: if atomic.Load(&panicking) != 0 { 210: if atomic.Load(&panicking) != 0 {
......
...@@ -33,7 +33,7 @@ var cannedInput string = `1 ...@@ -33,7 +33,7 @@ var cannedInput string = `1
` `
func main() { func main() {
hist := make([]int, 100) hist := make([]int, 10)
var reader io.Reader = strings.NewReader(cannedInput) //gdb-dbg=(hist/A,cannedInput/A) var reader io.Reader = strings.NewReader(cannedInput) //gdb-dbg=(hist/A,cannedInput/A)
if len(os.Args) > 1 { if len(os.Args) > 1 {
var err error var err error
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment