aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/internal/objfile
diff options
context:
space:
mode:
authorJosh Bleecher Snyder <josharian@gmail.com>2018-04-14 09:59:25 -0700
committerJosh Bleecher Snyder <josharian@gmail.com>2018-04-18 18:07:05 +0000
commit50ccbe1fc2737f6ea2642aee1c99c9ad141258b2 (patch)
tree257efca6a8d4c233fe3de21fc98948f7a1aa43d3 /src/cmd/internal/objfile
parent4c15fdb32b58cae0a999fdd2fb8eae1c720c870b (diff)
downloadgo-50ccbe1fc2737f6ea2642aee1c99c9ad141258b2.tar.xz
cmd/internal/objfile: emit trailing tab outside of Disasm.Decode
Disasm.Decode currently always appends a tab to the formatted instruction, although not to any relocations after it. Decode has two clients: objdump and pprof. pprof emits plain text, so it would be better not to have a trailing tab. objdump wants the trailing tab for text/tabwriter, but it is easy to add that to the Fprintf call. Shifting the responsibility for the trailing tab to the caller simplifies the code, increases correctness, and slightly improves performance by reducing and coalescing string concatenations. Change-Id: I0c85518ee185949e385de819e2e703bce757eba9 Reviewed-on: https://go-review.googlesource.com/106983 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Diffstat (limited to 'src/cmd/internal/objfile')
-rw-r--r--src/cmd/internal/objfile/disasm.go13
1 files changed, 4 insertions, 9 deletions
diff --git a/src/cmd/internal/objfile/disasm.go b/src/cmd/internal/objfile/disasm.go
index deba727695..fce63bfeea 100644
--- a/src/cmd/internal/objfile/disasm.go
+++ b/src/cmd/internal/objfile/disasm.go
@@ -253,7 +253,7 @@ func (d *Disasm) Print(w io.Writer, filter *regexp.Regexp, start, end uint64, pr
fmt.Fprintf(tw, "%08x", d.byteOrder.Uint32(code[i+j:]))
}
}
- fmt.Fprintf(tw, "\t%s\n", text)
+ fmt.Fprintf(tw, "\t%s\t\n", text)
})
tw.Flush()
}
@@ -274,15 +274,10 @@ func (d *Disasm) Decode(start, end uint64, relocs []Reloc, f func(pc, size uint6
i := pc - d.textStart
text, size := d.disasm(code[i:], pc, lookup, d.byteOrder)
file, line, _ := d.pcln.PCToLine(pc)
- text += "\t"
- first := true
+ sep := "\t"
for len(relocs) > 0 && relocs[0].Addr < i+uint64(size) {
- if first {
- first = false
- } else {
- text += " "
- }
- text += relocs[0].Stringer.String(pc - start)
+ text += sep + relocs[0].Stringer.String(pc-start)
+ sep = " "
relocs = relocs[1:]
}
f(pc, uint64(size), file, line, text)