mirror of https://github.com/golang/go.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 <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>
This commit is contained in:
parent
e5e552b816
commit
b45c7f1661
|
|
@ -23,6 +23,7 @@ package riscv
|
||||||
import (
|
import (
|
||||||
"cmd/internal/obj"
|
"cmd/internal/obj"
|
||||||
"cmd/internal/objabi"
|
"cmd/internal/objabi"
|
||||||
|
"cmd/internal/src"
|
||||||
"cmd/internal/sys"
|
"cmd/internal/sys"
|
||||||
"fmt"
|
"fmt"
|
||||||
"internal/abi"
|
"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
|
prologue = stacksplit(ctxt, prologue, cursym, newprog, stacksize) // emit split check
|
||||||
}
|
}
|
||||||
|
|
||||||
|
q := prologue
|
||||||
|
|
||||||
if stacksize != 0 {
|
if stacksize != 0 {
|
||||||
prologue = ctxt.StartUnsafePoint(prologue, newprog)
|
prologue = ctxt.StartUnsafePoint(prologue, newprog)
|
||||||
|
|
||||||
// Actually save LR.
|
// Actually save LR.
|
||||||
prologue = obj.Appendp(prologue, newprog)
|
prologue = obj.Appendp(prologue, newprog)
|
||||||
prologue.As = AMOV
|
prologue.As = AMOV
|
||||||
|
prologue.Pos = q.Pos
|
||||||
prologue.From = obj.Addr{Type: obj.TYPE_REG, Reg: REG_LR}
|
prologue.From = obj.Addr{Type: obj.TYPE_REG, Reg: REG_LR}
|
||||||
prologue.To = obj.Addr{Type: obj.TYPE_MEM, Reg: REG_SP, Offset: -stacksize}
|
prologue.To = obj.Addr{Type: obj.TYPE_MEM, Reg: REG_SP, Offset: -stacksize}
|
||||||
|
|
||||||
// Insert stack adjustment.
|
// Insert stack adjustment.
|
||||||
prologue = obj.Appendp(prologue, newprog)
|
prologue = obj.Appendp(prologue, newprog)
|
||||||
prologue.As = AADDI
|
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.From = obj.Addr{Type: obj.TYPE_CONST, Offset: -stacksize}
|
||||||
prologue.Reg = REG_SP
|
prologue.Reg = REG_SP
|
||||||
prologue.To = obj.Addr{Type: obj.TYPE_REG, Reg: REG_SP}
|
prologue.To = obj.Addr{Type: obj.TYPE_REG, Reg: REG_SP}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue