Commit eae9fee3 authored by Matthew Dempsky's avatar Matthew Dempsky Committed by Russ Cox

cmd/link: fix zig-zag decoding

The >>1 shift needs to happen before converting to int32, otherwise
large values will decode with an incorrect sign bit.

The <<31 shift can happen before or after, but before is consistent
with liblink and the go12symtab doc.

Bug demo at http://play.golang.org/p/jLrhPUakIu

LGTM=rsc
R=golang-codereviews, minux, rsc
CC=golang-codereviews
https://golang.org/cl/119630043
parent 5a17aaa8
......@@ -437,7 +437,7 @@ func (it *PCIter) Next() {
return
}
it.start = false
sv := int32(uv)>>1 ^ int32(uv)<<31>>31
sv := int32(uv>>1) ^ int32(uv<<31)>>31
it.Value += sv
// pc delta
......
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