• Russ Cox's avatar
    runtime: fix traceback of crash before LR is stored · dd82d5e7
    Russ Cox authored
    This fixes runtime's TestBreakpoint on ppc64:
    the Breakpoint frame was not showing up in the trace.
    
    It seems like f.frame should be either the frame size
    including the saved LR (if any) or the frame size
    not including the saved LR.
    
    On ppc64, f.frame is the frame size not including the saved LR.
    
    On arm, f.frame is the frame size not including the saved LR,
    except when that's -4, f.frame is 0 instead.
    
    The code here in the runtime expects that f.frame is the frame
    size including the saved LR.
    
    Since all three disagree and nothing else uses f.frame anymore,
    stop using it here too. Use funcspdelta, which tells us the exact
    difference between the FP and SP. If it's zero, LR has not been
    saved yet, so the one saved for sigpanic should be recorded.
    
    This fixes TestBreakpoint on both ppc64 and ppc64le.
    I don't really understand how it ever worked there.
    
    Change-Id: I2d2c580d5c0252cc8471e828980aeedcab76858d
    Reviewed-on: https://go-review.googlesource.com/6430Reviewed-by: 's avatarMinux Ma <minux@golang.org>
    dd82d5e7
Name
Last commit
Last update
..
archive Loading commit data...
bufio Loading commit data...
builtin Loading commit data...
bytes Loading commit data...
cmd Loading commit data...
compress Loading commit data...
container Loading commit data...
crypto Loading commit data...
database/sql Loading commit data...
debug Loading commit data...
encoding Loading commit data...
errors Loading commit data...
expvar Loading commit data...
flag Loading commit data...
fmt Loading commit data...
go Loading commit data...
hash Loading commit data...
html Loading commit data...
image Loading commit data...
index/suffixarray Loading commit data...
internal Loading commit data...
io Loading commit data...
log Loading commit data...
math Loading commit data...
mime Loading commit data...
net Loading commit data...
os Loading commit data...
path Loading commit data...
reflect Loading commit data...
regexp Loading commit data...
runtime Loading commit data...
sort Loading commit data...
strconv Loading commit data...
strings Loading commit data...
sync Loading commit data...
syscall Loading commit data...
testing Loading commit data...
text Loading commit data...
time Loading commit data...
unicode Loading commit data...
unsafe Loading commit data...
Make.dist Loading commit data...
all.bash Loading commit data...
all.bat Loading commit data...
all.rc Loading commit data...
androidtest.bash Loading commit data...
clean.bash Loading commit data...
clean.bat Loading commit data...
clean.rc Loading commit data...
make.bash Loading commit data...
make.bat Loading commit data...
make.rc Loading commit data...
nacltest.bash Loading commit data...
race.bash Loading commit data...
race.bat Loading commit data...
run.bash Loading commit data...
run.bat Loading commit data...
run.rc Loading commit data...