• Austin Clements's avatar
    runtime: use 2*regSize for saved frame pointer check · 67a03fd6
    Austin Clements authored
    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/3781Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
    67a03fd6
stack1.go 24.5 KB