Return regs from saveRegisters function

This commit is contained in:
Derek Parker 2015-05-01 08:34:09 -05:00
parent f7632eb5b0
commit c414c72ec9
3 changed files with 10 additions and 10 deletions

@ -90,14 +90,11 @@ func (thread *ThreadContext) CallFn(name string, fn func() error) error {
}
defer thread.Process.Clear(bp.Addr)
if err = thread.saveRegisters(); err != nil {
return err
}
regs, err := thread.Registers()
regs, err := thread.saveRegisters()
if err != nil {
return err
}
previousFrame := make([]byte, f.FrameSize)
frameSize := uintptr(regs.SP() + uint64(f.FrameSize))
if _, err := readMemory(thread, frameSize, previousFrame); err != nil {

@ -83,12 +83,12 @@ func readMemory(thread *ThreadContext, addr uintptr, data []byte) (int, error) {
return len(data), nil
}
func (thread *ThreadContext) saveRegisters() error {
func (thread *ThreadContext) saveRegisters() (Registers, error) {
kret := C.get_registers(C.mach_port_name_t(thread.os.thread_act), &thread.os.registers)
if kret != C.KERN_SUCCESS {
return fmt.Errorf("could not save register contents")
return nil, fmt.Errorf("could not save register contents")
}
return nil
return &Regs{pc: uint64(thread.os.registers.__rip), sp: uint64(thread.os.registers.__rsp)}, nil
}
func (thread *ThreadContext) restoreRegisters() error {

@ -50,8 +50,11 @@ func (t *ThreadContext) blocked() bool {
return false
}
func (thread *ThreadContext) saveRegisters() error {
return sys.PtraceGetRegs(thread.Id, &thread.os.registers)
func (thread *ThreadContext) saveRegisters() (Registers, error) {
if err := sys.PtraceGetRegs(thread.Id, &thread.os.registers); err != nil {
return nil, fmt.Errorf("could not save register contents")
}
return &Regs{&thread.os.registers}, nil
}
func (thread *ThreadContext) restoreRegisters() error {