From: Lin Runze Date: Tue, 15 Oct 2024 07:18:08 +0000 (+0800) Subject: cmd/internal/obj: add prologue_end DWARF stmt for riscv64 X-Git-Tag: go1.24rc1~595 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=b45c7f1661a88d6765e2a5e1eaff4c06c5af33ed;p=gostls13.git 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 Reviewed-by: Meng Zhuo LUCI-TryBot-Result: Go LUCI Reviewed-by: Cherry Mui --- 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}