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>
This commit is contained in:
Russ Cox 2015-08-11 10:59:24 -04:00
parent 1052b43213
commit 8ce80ce87d

View File

@ -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 {