From c1f409ed96822168a1702796f7b0f8d3ac152488 Mon Sep 17 00:00:00 2001 From: ian Date: Tue, 31 Jan 2012 14:23:07 +0000 Subject: syscall: Don't use PtraceRegs if it is not defined. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@183758 138bc75d-0d04-0410-961f-82ee72b054a4 --- libgo/go/syscall/libcall_linux.go | 8 ---- libgo/go/syscall/syscall_linux_386.go | 14 ++++++- libgo/go/syscall/syscall_linux_alpha.go | 66 +++++++++++++++++++-------------- libgo/go/syscall/syscall_linux_amd64.go | 14 ++++++- 4 files changed, 62 insertions(+), 40 deletions(-) (limited to 'libgo/go') diff --git a/libgo/go/syscall/libcall_linux.go b/libgo/go/syscall/libcall_linux.go index 3ff5d5f913f..7e88d04026e 100644 --- a/libgo/go/syscall/libcall_linux.go +++ b/libgo/go/syscall/libcall_linux.go @@ -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) } -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) { return ptrace(PTRACE_SETOPTIONS, pid, 0, uintptr(options)) } diff --git a/libgo/go/syscall/syscall_linux_386.go b/libgo/go/syscall/syscall_linux_386.go index aca9c7bf5ef..9a988a5dca2 100644 --- a/libgo/go/syscall/syscall_linux_386.go +++ b/libgo/go/syscall/syscall_linux_386.go @@ -6,10 +6,20 @@ package syscall +import "unsafe" + func (r *PtraceRegs) PC() uint64 { - return uint64(uint32(r.Eip)); + return uint64(uint32(r.Eip)) } 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))) } diff --git a/libgo/go/syscall/syscall_linux_alpha.go b/libgo/go/syscall/syscall_linux_alpha.go index d58f8eb13a5..713546cb057 100644 --- a/libgo/go/syscall/syscall_linux_alpha.go +++ b/libgo/go/syscall/syscall_linux_alpha.go @@ -6,42 +6,52 @@ package syscall +import "unsafe" + type PtraceRegs struct { - R0 uint64 - R1 uint64 - R2 uint64 - R3 uint64 - R4 uint64 - R5 uint64 - R6 uint64 - R7 uint64 - R8 uint64 - R19 uint64 - R20 uint64 - R21 uint64 - R22 uint64 - R23 uint64 - R24 uint64 - R25 uint64 - R26 uint64 - R27 uint64 - R28 uint64 - Hae uint64 + R0 uint64 + R1 uint64 + R2 uint64 + R3 uint64 + R4 uint64 + R5 uint64 + R6 uint64 + R7 uint64 + R8 uint64 + R19 uint64 + R20 uint64 + R21 uint64 + R22 uint64 + R23 uint64 + R24 uint64 + R25 uint64 + R26 uint64 + R27 uint64 + R28 uint64 + Hae uint64 Trap_a0 uint64 Trap_a1 uint64 Trap_a2 uint64 - Ps uint64 - Pc uint64 - Gp uint64 - R16 uint64 - R17 uint64 - R18 uint64 + Ps uint64 + Pc uint64 + Gp uint64 + R16 uint64 + R17 uint64 + R18 uint64 } func (r *PtraceRegs) PC() uint64 { - return r.Pc; + return r.Pc } 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))) } diff --git a/libgo/go/syscall/syscall_linux_amd64.go b/libgo/go/syscall/syscall_linux_amd64.go index 9932579cc10..609faed06d4 100644 --- a/libgo/go/syscall/syscall_linux_amd64.go +++ b/libgo/go/syscall/syscall_linux_amd64.go @@ -6,10 +6,20 @@ package syscall +import "unsafe" + func (r *PtraceRegs) PC() uint64 { - return r.Rip; + return r.Rip } 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))) } -- cgit v1.2.3