aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2015-08-11 10:59:24 -0400
committerRuss Cox <rsc@golang.org>2015-08-11 19:12:59 +0000
commit8ce80ce87ded2c02a3b7c2f15cbd19e8c2cc062d (patch)
treefc9b00b80df75e88d85f92c049855bd04d2c0085
parent1052b43213ca78035d50cdc3913a6d42c8b502d5 (diff)
downloadgo-8ce80ce87ded2c02a3b7c2f15cbd19e8c2cc062d.tar.gz
go-8ce80ce87ded2c02a3b7c2f15cbd19e8c2cc062d.zip
cmd/link: make -a output not crash
Fixes #12107. Change-Id: I62f1b6ac9fb6f2cfa3472253dc1c6f7b7d2a6faf Reviewed-on: https://go-review.googlesource.com/13448 Reviewed-by: David Crawshaw <crawshaw@golang.org>
-rw-r--r--src/cmd/link/internal/ld/data.go13
1 files changed, 5 insertions, 8 deletions
diff --git a/src/cmd/link/internal/ld/data.go b/src/cmd/link/internal/ld/data.go
index 33f250da48..55b12e5ece 100644
--- a/src/cmd/link/internal/ld/data.go
+++ b/src/cmd/link/internal/ld/data.go
@@ -778,7 +778,6 @@ func Codeblk(addr int64, size int64) {
}
eaddr := addr + size
- var n int64
var q []byte
for ; sym != nil; sym = sym.Next {
if !sym.Reachable {
@@ -797,20 +796,18 @@ func Codeblk(addr int64, size int64) {
}
fmt.Fprintf(&Bso, "%.6x\t%-20s\n", uint64(int64(addr)), sym.Name)
- n = sym.Size
q = sym.P
- for n >= 16 {
- fmt.Fprintf(&Bso, "%.6x\t%-20.16I\n", uint64(addr), q)
+ for len(q) >= 16 {
+ fmt.Fprintf(&Bso, "%.6x\t% x\n", uint64(addr), q[:16])
addr += 16
q = q[16:]
- n -= 16
}
- if n > 0 {
- fmt.Fprintf(&Bso, "%.6x\t%-20.*I\n", uint64(addr), int(n), q)
+ if len(q) > 0 {
+ fmt.Fprintf(&Bso, "%.6x\t% x\n", uint64(addr), q)
+ addr += int64(len(q))
}
- addr += n
}
if addr < eaddr {