delve/proc/registers_linux_amd64.go

38 lines
665 B
Go
Raw Normal View History

2015-06-12 19:49:23 +00:00
package proc
import sys "golang.org/x/sys/unix"
2014-12-05 18:35:17 +00:00
type Regs struct {
regs *sys.PtraceRegs
}
func (r *Regs) PC() uint64 {
return r.regs.PC()
}
func (r *Regs) SP() uint64 {
return r.regs.Rsp
}
func (r *Regs) CX() uint64 {
return r.regs.Rcx
}
func (r *Regs) SetPC(thread *Thread, pc uint64) (err error) {
r.regs.SetPC(pc)
thread.dbp.execPtraceFunc(func() { err = sys.PtraceSetRegs(thread.Id, r.regs) })
return
}
2015-06-12 19:51:23 +00:00
func registers(thread *Thread) (Registers, error) {
var (
regs sys.PtraceRegs
err error
)
thread.dbp.execPtraceFunc(func() { err = sys.PtraceGetRegs(thread.Id, &regs) })
if err != nil {
return nil, err
}
return &Regs{&regs}, nil
}