From adff422779709c83db91700fdcc0a0bd5dee6a21 Mon Sep 17 00:00:00 2001 From: Austin Clements Date: Wed, 25 May 2016 22:59:19 -0400 Subject: [PATCH] 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 --- src/cmd/link/internal/ld/dwarf.go | 6 ++++++ 1 file changed, 6 insertions(+) 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 -- 2.50.0