1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- // syscall_linux_s390x.go -- GNU/Linux s390x specific support
- // Copyright 2014 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.
- // The PtraceRegs struct generated for go looks like this:
- //
- // type PtraceRegs struct
- // {
- // Psw _psw_t;
- // Gprs [15+1]uint64;
- // Acrs [15+1]uint32;
- // Orig_gpr2 uint64;
- // Fp_regs _s390_fp_regs;
- // Per_info _per_struct;
- // Ieee_instruction_pointer uint64;
- // }
- //
- // The GETREGSET/SETREGSET ptrace commands on S/390 only read/write
- // the content up to Orig_gpr2. Hence, we use
- // PEEKUSR_AREA/POKEUSR_AREA like GDB does.
- package syscall
- import "unsafe"
- func (r *PtraceRegs) PC() uint64 { return r.Psw.addr }
- func (r *PtraceRegs) SetPC(pc uint64) { r.Psw.addr = pc }
- func PtraceGetRegs(pid int, regs *PtraceRegs) (err error) {
- parea := _ptrace_area{
- _sizeof_ptrace_area,
- 0,
- uint64(uintptr(unsafe.Pointer(regs))),
- }
- return ptrace(PTRACE_PEEKUSR_AREA, pid, uintptr(unsafe.Pointer(&parea)), 0)
- }
- func PtraceSetRegs(pid int, regs *PtraceRegs) (err error) {
- parea := _ptrace_area{
- _sizeof_ptrace_area,
- 0,
- uint64(uintptr(unsafe.Pointer(regs))),
- }
- return ptrace(PTRACE_POKEUSR_AREA, pid, uintptr(unsafe.Pointer(&parea)), 0)
- }
- func rawVforkSyscall(trap, a1 uintptr) (r1 uintptr, err Errno)
|