]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/internal/obj: add prologue_end DWARF stmt for riscv64
authorLin Runze <lrzlin@163.com>
Tue, 15 Oct 2024 07:18:08 +0000 (15:18 +0800)
committerCherry Mui <cherryyz@google.com>
Fri, 25 Oct 2024 13:46:59 +0000 (13:46 +0000)
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>
src/cmd/internal/obj/riscv/obj.go

index f6049f79fd291f6a5d9ae5a5c2b88b371a09bbee..efb27ecba8e436900528df7a370716fe9aa9211a 100644 (file)
@@ -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}