Commit e8738e98 by Ian Lance Taylor

syscall: Don't use PtraceRegs if it is not defined.

From-SVN: r183758
parent 458842fb
...@@ -139,14 +139,6 @@ func PtracePokeData(pid int, addr uintptr, data []byte) (count int, err error) { ...@@ -139,14 +139,6 @@ func PtracePokeData(pid int, addr uintptr, data []byte) (count int, err error) {
return ptracePoke(PTRACE_POKEDATA, PTRACE_PEEKDATA, pid, addr, data) return ptracePoke(PTRACE_POKEDATA, PTRACE_PEEKDATA, pid, addr, data)
} }
func PtraceGetRegs(pid int, regsout *PtraceRegs) (err error) {
return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))
}
func PtraceSetRegs(pid int, regs *PtraceRegs) (err error) {
return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))
}
func PtraceSetOptions(pid int, options int) (err error) { func PtraceSetOptions(pid int, options int) (err error) {
return ptrace(PTRACE_SETOPTIONS, pid, 0, uintptr(options)) return ptrace(PTRACE_SETOPTIONS, pid, 0, uintptr(options))
} }
......
...@@ -6,10 +6,20 @@ ...@@ -6,10 +6,20 @@
package syscall package syscall
import "unsafe"
func (r *PtraceRegs) PC() uint64 { func (r *PtraceRegs) PC() uint64 {
return uint64(uint32(r.Eip)); return uint64(uint32(r.Eip))
} }
func (r *PtraceRegs) SetPC(pc uint64) { func (r *PtraceRegs) SetPC(pc uint64) {
r.Eip = int32(pc); r.Eip = int32(pc)
}
func PtraceGetRegs(pid int, regsout *PtraceRegs) (err error) {
return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))
}
func PtraceSetRegs(pid int, regs *PtraceRegs) (err error) {
return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))
} }
...@@ -6,42 +6,52 @@ ...@@ -6,42 +6,52 @@
package syscall package syscall
import "unsafe"
type PtraceRegs struct { type PtraceRegs struct {
R0 uint64 R0 uint64
R1 uint64 R1 uint64
R2 uint64 R2 uint64
R3 uint64 R3 uint64
R4 uint64 R4 uint64
R5 uint64 R5 uint64
R6 uint64 R6 uint64
R7 uint64 R7 uint64
R8 uint64 R8 uint64
R19 uint64 R19 uint64
R20 uint64 R20 uint64
R21 uint64 R21 uint64
R22 uint64 R22 uint64
R23 uint64 R23 uint64
R24 uint64 R24 uint64
R25 uint64 R25 uint64
R26 uint64 R26 uint64
R27 uint64 R27 uint64
R28 uint64 R28 uint64
Hae uint64 Hae uint64
Trap_a0 uint64 Trap_a0 uint64
Trap_a1 uint64 Trap_a1 uint64
Trap_a2 uint64 Trap_a2 uint64
Ps uint64 Ps uint64
Pc uint64 Pc uint64
Gp uint64 Gp uint64
R16 uint64 R16 uint64
R17 uint64 R17 uint64
R18 uint64 R18 uint64
} }
func (r *PtraceRegs) PC() uint64 { func (r *PtraceRegs) PC() uint64 {
return r.Pc; return r.Pc
} }
func (r *PtraceRegs) SetPC(pc uint64) { func (r *PtraceRegs) SetPC(pc uint64) {
r.Pc = pc; r.Pc = pc
}
func PtraceGetRegs(pid int, regsout *PtraceRegs) (err error) {
return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))
}
func PtraceSetRegs(pid int, regs *PtraceRegs) (err error) {
return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))
} }
...@@ -6,10 +6,20 @@ ...@@ -6,10 +6,20 @@
package syscall package syscall
import "unsafe"
func (r *PtraceRegs) PC() uint64 { func (r *PtraceRegs) PC() uint64 {
return r.Rip; return r.Rip
} }
func (r *PtraceRegs) SetPC(pc uint64) { func (r *PtraceRegs) SetPC(pc uint64) {
r.Rip = pc; r.Rip = pc
}
func PtraceGetRegs(pid int, regsout *PtraceRegs) (err error) {
return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))
}
func PtraceSetRegs(pid int, regs *PtraceRegs) (err error) {
return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment