aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/internal/obj
diff options
context:
space:
mode:
authorLin Runze <lrzlin@163.com>2024-10-15 15:18:08 +0800
committerCherry Mui <cherryyz@google.com>2024-10-25 13:46:59 +0000
commitb45c7f1661a88d6765e2a5e1eaff4c06c5af33ed (patch)
treea9dc4866b8d3a27734072cf5eaf552d53fd4fbb6 /src/cmd/internal/obj
parente5e552b816793f2b5729744c27995cce12baf52e (diff)
downloadgo-b45c7f1661a88d6765e2a5e1eaff4c06c5af33ed.tar.xz
cmd/internal/obj: add prologue_end DWARF stmt for riscv64
This patch adds prologue_end statement to the DWARF info for riscv64, which delve debugger uses for skip stacksplit prologue. Change-Id: I4e5d9c26202385f65b3118b16f53f66de9d327f0 Reviewed-on: https://go-review.googlesource.com/c/go/+/620295 Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com> Reviewed-by: Meng Zhuo <mengzhuo1203@gmail.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Cherry Mui <cherryyz@google.com>
Diffstat (limited to 'src/cmd/internal/obj')
-rw-r--r--src/cmd/internal/obj/riscv/obj.go6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/cmd/internal/obj/riscv/obj.go b/src/cmd/internal/obj/riscv/obj.go
index f6049f79fd..efb27ecba8 100644
--- a/src/cmd/internal/obj/riscv/obj.go
+++ b/src/cmd/internal/obj/riscv/obj.go
@@ -23,6 +23,7 @@ package riscv
import (
"cmd/internal/obj"
"cmd/internal/objabi"
+ "cmd/internal/src"
"cmd/internal/sys"
"fmt"
"internal/abi"
@@ -427,18 +428,23 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym, newprog obj.ProgAlloc) {
prologue = stacksplit(ctxt, prologue, cursym, newprog, stacksize) // emit split check
}
+ q := prologue
+
if stacksize != 0 {
prologue = ctxt.StartUnsafePoint(prologue, newprog)
// Actually save LR.
prologue = obj.Appendp(prologue, newprog)
prologue.As = AMOV
+ prologue.Pos = q.Pos
prologue.From = obj.Addr{Type: obj.TYPE_REG, Reg: REG_LR}
prologue.To = obj.Addr{Type: obj.TYPE_MEM, Reg: REG_SP, Offset: -stacksize}
// Insert stack adjustment.
prologue = obj.Appendp(prologue, newprog)
prologue.As = AADDI
+ prologue.Pos = q.Pos
+ prologue.Pos = prologue.Pos.WithXlogue(src.PosPrologueEnd)
prologue.From = obj.Addr{Type: obj.TYPE_CONST, Offset: -stacksize}
prologue.Reg = REG_SP
prologue.To = obj.Addr{Type: obj.TYPE_REG, Reg: REG_SP}