diff --git a/src/cmd/objdump/objdump_test.go b/src/cmd/objdump/objdump_test.go index 354e5d407a..2c61c484cb 100644 --- a/src/cmd/objdump/objdump_test.go +++ b/src/cmd/objdump/objdump_test.go @@ -155,10 +155,6 @@ var armNeed = []string{ // can handle that one. func TestDisasm(t *testing.T) { - if runtime.GOOS == "plan9" { - t.Skip("skipping test; see http://golang.org/issue/7947") - } - tmp, exe := buildObjdump(t) defer os.RemoveAll(tmp) diff --git a/src/cmd/objdump/plan9obj.go b/src/cmd/objdump/plan9obj.go index 5434f8e440..34462f31c5 100644 --- a/src/cmd/objdump/plan9obj.go +++ b/src/cmd/objdump/plan9obj.go @@ -12,6 +12,15 @@ import ( "sort" ) +var validSymType = map[rune]bool{ + 'T': true, + 't': true, + 'D': true, + 'd': true, + 'B': true, + 'b': true, +} + func plan9Symbols(f *os.File) (syms []Sym, goarch string) { p, err := plan9obj.NewFile(f) if err != nil { @@ -31,11 +40,17 @@ func plan9Symbols(f *os.File) (syms []Sym, goarch string) { // We infer the size of a symbol by looking at where the next symbol begins. var addrs []uint64 for _, s := range plan9Syms { + if !validSymType[s.Type] { + continue + } addrs = append(addrs, s.Value) } sort.Sort(uint64s(addrs)) for _, s := range plan9Syms { + if !validSymType[s.Type] { + continue + } sym := Sym{Addr: s.Value, Name: s.Name, Code: rune(s.Type)} i := sort.Search(len(addrs), func(x int) bool { return addrs[x] > s.Value }) if i < len(addrs) {