Commit fca453e0 authored by Rob Pike's avatar Rob Pike

cmd/nm: add -sort=size

When printing the size, we often want to sort on that key.
Because it's used when looking for large things, make the
sort go from largest to smallest.

Perfect recreation of CL 45150044, which was lost to some blunder.

R=golang-codereviews, gobot, rsc
CC=golang-codereviews
https://golang.org/cl/48500044
parent 43108ee5
......@@ -31,8 +31,9 @@
// for compatibility with other nm commands
// -size
// print symbol size in decimal between address and type
// -sort {address,name,none}
// -sort {address,name,none,size}
// sort output in the given order (default name)
// size orders from largest to smallest
// -type
// print symbol type after name
//
......
......@@ -58,7 +58,7 @@ func main() {
flag.Parse()
switch *sortOrder {
case "address", "name", "none":
case "address", "name", "none", "size":
// ok
default:
fmt.Fprintf(os.Stderr, "nm: unknown sort order %q\n", *sortOrder)
......@@ -135,6 +135,8 @@ HaveSyms:
sort.Sort(byAddr(syms))
case "name":
sort.Sort(byName(syms))
case "size":
sort.Sort(bySize(syms))
}
w := bufio.NewWriter(os.Stdout)
......@@ -170,3 +172,9 @@ type byName []Sym
func (x byName) Len() int { return len(x) }
func (x byName) Swap(i, j int) { x[i], x[j] = x[j], x[i] }
func (x byName) Less(i, j int) bool { return x[i].Name < x[j].Name }
type bySize []Sym
func (x bySize) Len() int { return len(x) }
func (x bySize) Swap(i, j int) { x[i], x[j] = x[j], x[i] }
func (x bySize) Less(i, j int) bool { return x[i].Size > x[j].Size }
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