delve/proc/registers.go
2016-01-10 02:10:51 -08:00

35 lines
796 B
Go

package proc
import "fmt"
// Registers is an interface for a generic register type. The
// interface encapsulates the generic values / actions
// we need independant of arch. The concrete register types
// will be different depending on OS/Arch.
type Registers interface {
PC() uint64
SP() uint64
CX() uint64
TLS() uint64
SetPC(*Thread, uint64) error
String() string
}
// Registers obtains register values from the debugged process.
func (t *Thread) Registers() (Registers, error) {
regs, err := registers(t)
if err != nil {
return nil, fmt.Errorf("could not get registers: %s", err)
}
return regs, nil
}
// PC returns the current PC for this thread.
func (t *Thread) PC() (uint64, error) {
regs, err := t.Registers()
if err != nil {
return 0, err
}
return regs.PC(), nil
}