mirror of https://github.com/golang/go.git
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
This commit is contained in:
parent
5a17aaa830
commit
eae9fee3bf
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue