From: Austin Clements Date: Thu, 26 May 2016 02:59:19 +0000 (-0400) Subject: cmd/link/internal/ld: fix DWARF offsets with GOEXPERIMENT=framepointer X-Git-Tag: go1.7beta1~82 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=adff422779709c83db91700fdcc0a0bd5dee6a21;p=gostls13.git cmd/link/internal/ld: fix DWARF offsets with GOEXPERIMENT=framepointer The offsets computed by the DWARF expressions for local variables currently don't account for the extra stack slot used by the frame pointer when GOEXPERIMENT=framepointer is enabled. Fix this by adding the extra stack slot to the offset. This fixes TestGdbPython with GOEXPERIMENT=framepointer. Updates #15840. Change-Id: I1b2ebb2750cd22266f4a89ec8d9e8bfa05fabd19 Reviewed-on: https://go-review.googlesource.com/23458 Run-TryBot: Austin Clements TryBot-Result: Gobot Gobot Reviewed-by: Russ Cox Reviewed-by: Ian Lance Taylor --- diff --git a/src/cmd/link/internal/ld/dwarf.go b/src/cmd/link/internal/ld/dwarf.go index bf1a7e74c1..ca86e72d83 100644 --- a/src/cmd/link/internal/ld/dwarf.go +++ b/src/cmd/link/internal/ld/dwarf.go @@ -1558,6 +1558,12 @@ func writelines(prev *LSym) *LSym { if !haslinkregister() { offs -= int64(SysArch.PtrSize) } + if obj.Framepointer_enabled != 0 { + // The frame pointer is saved + // between the CFA and the + // autos. + offs -= int64(SysArch.PtrSize) + } case obj.A_PARAM: dt = DW_ABRV_PARAM