mirror of
https://github.com/go-delve/delve.git
synced 2025-11-02 04:36:29 +08:00
Isolate linux specific register getters / setters
This commit is contained in:
@ -2,6 +2,32 @@ package proctl
|
||||
|
||||
import "syscall"
|
||||
|
||||
type Regs struct {
|
||||
regs *syscall.PtraceRegs
|
||||
}
|
||||
|
||||
func (r *Regs) PC() uint64 {
|
||||
return r.regs.PC()
|
||||
}
|
||||
|
||||
func (r *Regs) SP() uint64 {
|
||||
return r.regs.Rsp
|
||||
}
|
||||
|
||||
func (r *Regs) SetPC(tid int, pc uint64) error {
|
||||
r.regs.SetPC(pc)
|
||||
return syscall.PtraceSetRegs(tid, r.regs)
|
||||
}
|
||||
|
||||
func registers(tid int) (Registers, error) {
|
||||
var regs syscall.PtraceRegs
|
||||
err := syscall.PtraceGetRegs(tid, ®s)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &Regs{®s}, nil
|
||||
}
|
||||
|
||||
func WriteMemory(tid int, addr uintptr, data []byte) (int, error) {
|
||||
return syscall.PtracePokeData(tid, addr, data)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user