libgo, syscall: fix ptrace implementation on MIPS
authorIan Lance Taylor <ian@gcc.gnu.org>
Wed, 21 Jun 2017 21:46:03 +0000 (21:46 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Wed, 21 Jun 2017 21:46:03 +0000 (21:46 +0000)
    On MIPS, the correct structure for PtraceRegs is 'struct pt_regs' which
    is declared in linux/ptrace.h. Previously no PtraceRegs structure was
    created on MIPS because 'struct user_regs_struct' doesn't exist there.

    Fallback to using pt_regs when the PtraceRegs structure is generated in
    mksysinfo.sh, then adjust syscall_linux_mipsx.go to read the program
    counter from the correct field.

    In addition, implement PtraceGetRegs and PtraceSetRegs on all 3 ABI
    variants.

    syscall_linux_mips64x.go can now be removed since the ptrace code on
    all 3 ABIs is identical.

    Reviewed-on: https://go-review.googlesource.com/46150

From-SVN: r249473

libgo/go/syscall/syscall_linux_mips64x.go [deleted file]

diff --git a/libgo/go/syscall/syscall_linux_mips64x.go b/libgo/go/syscall/syscall_linux_mips64x.go
deleted file mode 100644 (file)
index c1d51b1..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build linux
-// +build mips64 mips64le
-
-package syscall
-
-func (r *PtraceRegs) PC() uint64 { return r.Regs[64] }
-
-func (r *PtraceRegs) SetPC(pc uint64) { r.Regs[64] = 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)))
-}