summaryrefslogtreecommitdiff
path: root/src/cmd/internal/objfile/objfile.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/internal/objfile/objfile.go')
-rw-r--r--src/cmd/internal/objfile/objfile.go14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/cmd/internal/objfile/objfile.go b/src/cmd/internal/objfile/objfile.go
index 3d4a5d27c..9227ef387 100644
--- a/src/cmd/internal/objfile/objfile.go
+++ b/src/cmd/internal/objfile/objfile.go
@@ -9,6 +9,7 @@ import (
"debug/gosym"
"fmt"
"os"
+ "sort"
)
type rawFile interface {
@@ -62,9 +63,20 @@ func (f *File) Close() error {
}
func (f *File) Symbols() ([]Sym, error) {
- return f.raw.symbols()
+ syms, err := f.raw.symbols()
+ if err != nil {
+ return nil, err
+ }
+ sort.Sort(byAddr(syms))
+ return syms, nil
}
+type byAddr []Sym
+
+func (x byAddr) Less(i, j int) bool { return x[i].Addr < x[j].Addr }
+func (x byAddr) Len() int { return len(x) }
+func (x byAddr) Swap(i, j int) { x[i], x[j] = x[j], x[i] }
+
func (f *File) PCLineTable() (*gosym.Table, error) {
textStart, symtab, pclntab, err := f.raw.pcln()
if err != nil {