diff options
author | Ian Lance Taylor <ian@gcc.gnu.org> | 2017-06-21 21:46:03 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2017-06-21 21:46:03 +0000 |
commit | a8bc65cd00911ef459e77a7e0b7218ac150065bb (patch) | |
tree | c2a5a378324e461624f45283c61d12f031767854 | |
parent | 8d4b68a7c4091c99c8d591e93efae5748a7ced13 (diff) | |
download | gcc-a8bc65cd00911ef459e77a7e0b7218ac150065bb.zip gcc-a8bc65cd00911ef459e77a7e0b7218ac150065bb.tar.gz gcc-a8bc65cd00911ef459e77a7e0b7218ac150065bb.tar.bz2 |
libgo, syscall: fix ptrace implementation on MIPS
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
-rw-r--r-- | libgo/go/syscall/syscall_linux_mips64x.go | 20 |
1 files changed, 0 insertions, 20 deletions
diff --git a/libgo/go/syscall/syscall_linux_mips64x.go b/libgo/go/syscall/syscall_linux_mips64x.go deleted file mode 100644 index c1d51b1..0000000 --- a/libgo/go/syscall/syscall_linux_mips64x.go +++ /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))) -} |