diff options
author | Russ Cox <rsc@golang.org> | 2015-08-11 10:59:24 -0400 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2015-08-11 19:12:59 +0000 |
commit | 8ce80ce87ded2c02a3b7c2f15cbd19e8c2cc062d (patch) | |
tree | fc9b00b80df75e88d85f92c049855bd04d2c0085 | |
parent | 1052b43213ca78035d50cdc3913a6d42c8b502d5 (diff) | |
download | go-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.go | 13 |
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 { |