]> Cypherpunks repositories - gostls13.git/commit
runtime: use 2*regSize for saved frame pointer check
authorAustin Clements <austin@google.com>
Tue, 3 Feb 2015 14:09:56 +0000 (09:09 -0500)
committerAustin Clements <austin@google.com>
Tue, 3 Feb 2015 14:37:16 +0000 (14:37 +0000)
commit67a03fd6a2c6d13154d7f27c464023422b83c05d
tree42f622d0fc92bffbed0357c310e04ee2918b826b
parentc901bd01c131b6a3d1bbc7dde9de02cb7ce2544a
runtime: use 2*regSize for saved frame pointer check

Previously, we checked for a saved frame pointer by looking for a
2*ptrSize gap between the argument pointer and the locals pointer.
The intent of this check was to look for a two stack slot gap (caller
IP and saved frame pointer), but stack slots are regSize, not ptrSize.

Correct this by checking instead for a 2*regSize gap.

On most platforms, this made no difference because ptrSize==regSize.
However, on amd64p32 (nacl), the saved frame pointer check incorrectly
fired when there was no saved frame pointer because the one stack slot
for the caller IP left an 8 byte gap, which is 2*ptrSize (but not
2*regSize) on amd64p32.

Fixes #9760.

Change-Id: I6eedcf681fe5bf2bf924dde8a8f2d9860a4d758e
Reviewed-on: https://go-review.googlesource.com/3781
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
src/runtime/stack1.go
src/runtime/traceback.go