mirror of
https://github.com/rwinkhart/sys.git
synced 2026-09-02 07:07:33 -04:00
unix: add ptrace support for FreeBSD
Change-Id: Iaf95e3e7bd3d33ad7e214c45ed87b9e967b16631 GitHub-Last-Rev: e0308dc7ad566b70922a499e81610a746afe84ac GitHub-Pull-Request: golang/sys#34 Reviewed-on: https://go-review.googlesource.com/c/sys/+/179099 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
committed by
Ian Lance Taylor
parent
6f217b454f
commit
bf70e46780
@@ -86,6 +86,7 @@ const (
|
|||||||
shift = 8
|
shift = 8
|
||||||
|
|
||||||
exited = 0
|
exited = 0
|
||||||
|
killed = 9
|
||||||
stopped = 0x7F
|
stopped = 0x7F
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -112,6 +113,8 @@ func (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 }
|
|||||||
|
|
||||||
func (w WaitStatus) Stopped() bool { return w&mask == stopped && syscall.Signal(w>>shift) != SIGSTOP }
|
func (w WaitStatus) Stopped() bool { return w&mask == stopped && syscall.Signal(w>>shift) != SIGSTOP }
|
||||||
|
|
||||||
|
func (w WaitStatus) Killed() bool { return w&mask == killed && syscall.Signal(w>>shift) != SIGKILL }
|
||||||
|
|
||||||
func (w WaitStatus) Continued() bool { return w&mask == stopped && syscall.Signal(w>>shift) == SIGSTOP }
|
func (w WaitStatus) Continued() bool { return w&mask == stopped && syscall.Signal(w>>shift) == SIGSTOP }
|
||||||
|
|
||||||
func (w WaitStatus) StopSignal() syscall.Signal {
|
func (w WaitStatus) StopSignal() syscall.Signal {
|
||||||
|
|||||||
@@ -521,6 +521,70 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
|
|||||||
return sendfile(outfd, infd, offset, count)
|
return sendfile(outfd, infd, offset, count)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//sys ptrace(request int, pid int, addr uintptr, data int) (err error)
|
||||||
|
|
||||||
|
func PtraceAttach(pid int) (err error) {
|
||||||
|
return ptrace(PTRACE_ATTACH, pid, 0, 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
func PtraceCont(pid int, signal int) (err error) {
|
||||||
|
return ptrace(PTRACE_CONT, pid, 1, signal)
|
||||||
|
}
|
||||||
|
|
||||||
|
func PtraceDetach(pid int) (err error) {
|
||||||
|
return ptrace(PTRACE_DETACH, pid, 1, 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
func PtraceGetFpRegs(pid int, fpregsout *FpReg) (err error) {
|
||||||
|
return ptrace(PTRACE_GETFPREGS, pid, uintptr(unsafe.Pointer(fpregsout)), 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
func PtraceGetFsBase(pid int, fsbase *int64) (err error) {
|
||||||
|
return ptrace(PTRACE_GETFSBASE, pid, uintptr(unsafe.Pointer(fsbase)), 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
func PtraceGetRegs(pid int, regsout *Reg) (err error) {
|
||||||
|
return ptrace(PTRACE_GETREGS, pid, uintptr(unsafe.Pointer(regsout)), 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
func PtraceIO(req int, pid int, addr uintptr, out []byte, countin int) (count int, err error) {
|
||||||
|
ioDesc := PtraceIoDesc{Op: int32(req), Offs: (*byte)(unsafe.Pointer(addr)), Addr: (*byte)(unsafe.Pointer(&out[0])), Len: uint(countin)}
|
||||||
|
err = ptrace(PTRACE_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0)
|
||||||
|
return int(ioDesc.Len), err
|
||||||
|
}
|
||||||
|
|
||||||
|
func PtraceLwpEvents(pid int, enable int) (err error) {
|
||||||
|
return ptrace(PTRACE_LWPEVENTS, pid, 0, enable)
|
||||||
|
}
|
||||||
|
|
||||||
|
func PtraceLwpInfo(pid int, info uintptr) (err error) {
|
||||||
|
return ptrace(PTRACE_LWPINFO, pid, info, int(unsafe.Sizeof(PtraceLwpInfoStruct{})))
|
||||||
|
}
|
||||||
|
|
||||||
|
func PtracePeekData(pid int, addr uintptr, out []byte) (count int, err error) {
|
||||||
|
return PtraceIO(PIOD_READ_D, pid, addr, out, SizeofLong)
|
||||||
|
}
|
||||||
|
|
||||||
|
func PtracePeekText(pid int, addr uintptr, out []byte) (count int, err error) {
|
||||||
|
return PtraceIO(PIOD_READ_I, pid, addr, out, SizeofLong)
|
||||||
|
}
|
||||||
|
|
||||||
|
func PtracePokeData(pid int, addr uintptr, data []byte) (count int, err error) {
|
||||||
|
return PtraceIO(PIOD_WRITE_D, pid, addr, data, SizeofLong)
|
||||||
|
}
|
||||||
|
|
||||||
|
func PtracePokeText(pid int, addr uintptr, data []byte) (count int, err error) {
|
||||||
|
return PtraceIO(PIOD_WRITE_I, pid, addr, data, SizeofLong)
|
||||||
|
}
|
||||||
|
|
||||||
|
func PtraceSetRegs(pid int, regs *Reg) (err error) {
|
||||||
|
return ptrace(PTRACE_SETREGS, pid, uintptr(unsafe.Pointer(regs)), 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
func PtraceSingleStep(pid int) (err error) {
|
||||||
|
return ptrace(PTRACE_SINGLESTEP, pid, 1, 0)
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Exposed directly
|
* Exposed directly
|
||||||
*/
|
*/
|
||||||
|
|||||||
+47
-3
@@ -243,11 +243,55 @@ const (
|
|||||||
// Ptrace requests
|
// Ptrace requests
|
||||||
|
|
||||||
const (
|
const (
|
||||||
PTRACE_TRACEME = C.PT_TRACE_ME
|
PTRACE_ATTACH = C.PT_ATTACH
|
||||||
PTRACE_CONT = C.PT_CONTINUE
|
PTRACE_CONT = C.PT_CONTINUE
|
||||||
PTRACE_KILL = C.PT_KILL
|
PTRACE_DETACH = C.PT_DETACH
|
||||||
|
PTRACE_GETFPREGS = C.PT_GETFPREGS
|
||||||
|
PTRACE_GETFSBASE = C.PT_GETFSBASE
|
||||||
|
PTRACE_GETLWPLIST = C.PT_GETLWPLIST
|
||||||
|
PTRACE_GETNUMLWPS = C.PT_GETNUMLWPS
|
||||||
|
PTRACE_GETREGS = C.PT_GETREGS
|
||||||
|
PTRACE_GETXSTATE = C.PT_GETXSTATE
|
||||||
|
PTRACE_IO = C.PT_IO
|
||||||
|
PTRACE_KILL = C.PT_KILL
|
||||||
|
PTRACE_LWPEVENTS = C.PT_LWP_EVENTS
|
||||||
|
PTRACE_LWPINFO = C.PT_LWPINFO
|
||||||
|
PTRACE_SETFPREGS = C.PT_SETFPREGS
|
||||||
|
PTRACE_SETREGS = C.PT_SETREGS
|
||||||
|
PTRACE_SINGLESTEP = C.PT_STEP
|
||||||
|
PTRACE_TRACEME = C.PT_TRACE_ME
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
PIOD_READ_D = C.PIOD_READ_D
|
||||||
|
PIOD_WRITE_D = C.PIOD_WRITE_D
|
||||||
|
PIOD_READ_I = C.PIOD_READ_I
|
||||||
|
PIOD_WRITE_I = C.PIOD_WRITE_I
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
PL_FLAG_BORN = C.PL_FLAG_BORN
|
||||||
|
PL_FLAG_EXITED = C.PL_FLAG_EXITED
|
||||||
|
PL_FLAG_SI = C.PL_FLAG_SI
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
TRAP_BRKPT = C.TRAP_BRKPT
|
||||||
|
TRAP_TRACE = C.TRAP_TRACE
|
||||||
|
)
|
||||||
|
|
||||||
|
type PtraceLwpInfoStruct C.struct_ptrace_lwpinfo
|
||||||
|
|
||||||
|
type __Siginfo C.struct___siginfo
|
||||||
|
|
||||||
|
type Sigset_t C.sigset_t
|
||||||
|
|
||||||
|
type Reg C.struct_reg
|
||||||
|
|
||||||
|
type FpReg C.struct_fpreg
|
||||||
|
|
||||||
|
type PtraceIoDesc C.struct_ptrace_io_desc
|
||||||
|
|
||||||
// Events (kqueue, kevent)
|
// Events (kqueue, kevent)
|
||||||
|
|
||||||
type Kevent_t C.struct_kevent_freebsd11
|
type Kevent_t C.struct_kevent_freebsd11
|
||||||
|
|||||||
@@ -387,6 +387,16 @@ func pipe2(p *[2]_C_int, flags int) (err error) {
|
|||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func ptrace(request int, pid int, addr uintptr, data int) (err error) {
|
||||||
|
_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Getcwd(buf []byte) (n int, err error) {
|
func Getcwd(buf []byte) (n int, err error) {
|
||||||
var _p0 unsafe.Pointer
|
var _p0 unsafe.Pointer
|
||||||
if len(buf) > 0 {
|
if len(buf) > 0 {
|
||||||
|
|||||||
@@ -387,6 +387,16 @@ func pipe2(p *[2]_C_int, flags int) (err error) {
|
|||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func ptrace(request int, pid int, addr uintptr, data int) (err error) {
|
||||||
|
_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Getcwd(buf []byte) (n int, err error) {
|
func Getcwd(buf []byte) (n int, err error) {
|
||||||
var _p0 unsafe.Pointer
|
var _p0 unsafe.Pointer
|
||||||
if len(buf) > 0 {
|
if len(buf) > 0 {
|
||||||
|
|||||||
@@ -387,6 +387,16 @@ func pipe2(p *[2]_C_int, flags int) (err error) {
|
|||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func ptrace(request int, pid int, addr uintptr, data int) (err error) {
|
||||||
|
_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Getcwd(buf []byte) (n int, err error) {
|
func Getcwd(buf []byte) (n int, err error) {
|
||||||
var _p0 unsafe.Pointer
|
var _p0 unsafe.Pointer
|
||||||
if len(buf) > 0 {
|
if len(buf) > 0 {
|
||||||
|
|||||||
@@ -404,6 +404,16 @@ func Getcwd(buf []byte) (n int, err error) {
|
|||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func ptrace(request int, pid int, addr uintptr, data int) (err error) {
|
||||||
|
_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func ioctl(fd int, req uint, arg uintptr) (err error) {
|
func ioctl(fd int, req uint, arg uintptr) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
|
_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
|
|||||||
+100
-3
@@ -324,11 +324,108 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
PTRACE_TRACEME = 0x0
|
PTRACE_ATTACH = 0xa
|
||||||
PTRACE_CONT = 0x7
|
PTRACE_CONT = 0x7
|
||||||
PTRACE_KILL = 0x8
|
PTRACE_DETACH = 0xb
|
||||||
|
PTRACE_GETFPREGS = 0x23
|
||||||
|
PTRACE_GETFSBASE = 0x47
|
||||||
|
PTRACE_GETLWPLIST = 0xf
|
||||||
|
PTRACE_GETNUMLWPS = 0xe
|
||||||
|
PTRACE_GETREGS = 0x21
|
||||||
|
PTRACE_GETXSTATE = 0x45
|
||||||
|
PTRACE_IO = 0xc
|
||||||
|
PTRACE_KILL = 0x8
|
||||||
|
PTRACE_LWPEVENTS = 0x18
|
||||||
|
PTRACE_LWPINFO = 0xd
|
||||||
|
PTRACE_SETFPREGS = 0x24
|
||||||
|
PTRACE_SETREGS = 0x22
|
||||||
|
PTRACE_SINGLESTEP = 0x9
|
||||||
|
PTRACE_TRACEME = 0x0
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
PIOD_READ_D = 0x1
|
||||||
|
PIOD_WRITE_D = 0x2
|
||||||
|
PIOD_READ_I = 0x3
|
||||||
|
PIOD_WRITE_I = 0x4
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
PL_FLAG_BORN = 0x100
|
||||||
|
PL_FLAG_EXITED = 0x200
|
||||||
|
PL_FLAG_SI = 0x20
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
TRAP_BRKPT = 0x1
|
||||||
|
TRAP_TRACE = 0x2
|
||||||
|
)
|
||||||
|
|
||||||
|
type PtraceLwpInfoStruct struct {
|
||||||
|
Lwpid int32
|
||||||
|
Event int32
|
||||||
|
Flags int32
|
||||||
|
Sigmask Sigset_t
|
||||||
|
Siglist Sigset_t
|
||||||
|
Siginfo __Siginfo
|
||||||
|
Tdname [20]int8
|
||||||
|
Child_pid int32
|
||||||
|
Syscall_code uint32
|
||||||
|
Syscall_narg uint32
|
||||||
|
}
|
||||||
|
|
||||||
|
type __Siginfo struct {
|
||||||
|
Signo int32
|
||||||
|
Errno int32
|
||||||
|
Code int32
|
||||||
|
Pid int32
|
||||||
|
Uid uint32
|
||||||
|
Status int32
|
||||||
|
Addr *byte
|
||||||
|
Value [4]byte
|
||||||
|
X_reason [32]byte
|
||||||
|
}
|
||||||
|
|
||||||
|
type Sigset_t struct {
|
||||||
|
Val [4]uint32
|
||||||
|
}
|
||||||
|
|
||||||
|
type Reg struct {
|
||||||
|
Fs uint32
|
||||||
|
Es uint32
|
||||||
|
Ds uint32
|
||||||
|
Edi uint32
|
||||||
|
Esi uint32
|
||||||
|
Ebp uint32
|
||||||
|
Isp uint32
|
||||||
|
Ebx uint32
|
||||||
|
Edx uint32
|
||||||
|
Ecx uint32
|
||||||
|
Eax uint32
|
||||||
|
Trapno uint32
|
||||||
|
Err uint32
|
||||||
|
Eip uint32
|
||||||
|
Cs uint32
|
||||||
|
Eflags uint32
|
||||||
|
Esp uint32
|
||||||
|
Ss uint32
|
||||||
|
Gs uint32
|
||||||
|
}
|
||||||
|
|
||||||
|
type FpReg struct {
|
||||||
|
Env [7]uint32
|
||||||
|
Acc [8][10]uint8
|
||||||
|
Ex_sw uint32
|
||||||
|
Pad [64]uint8
|
||||||
|
}
|
||||||
|
|
||||||
|
type PtraceIoDesc struct {
|
||||||
|
Op int32
|
||||||
|
Offs *byte
|
||||||
|
Addr *byte
|
||||||
|
Len uint
|
||||||
|
}
|
||||||
|
|
||||||
type Kevent_t struct {
|
type Kevent_t struct {
|
||||||
Ident uint32
|
Ident uint32
|
||||||
Filter int16
|
Filter int16
|
||||||
|
|||||||
@@ -322,11 +322,115 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
PTRACE_TRACEME = 0x0
|
PTRACE_ATTACH = 0xa
|
||||||
PTRACE_CONT = 0x7
|
PTRACE_CONT = 0x7
|
||||||
PTRACE_KILL = 0x8
|
PTRACE_DETACH = 0xb
|
||||||
|
PTRACE_GETFPREGS = 0x23
|
||||||
|
PTRACE_GETFSBASE = 0x47
|
||||||
|
PTRACE_GETLWPLIST = 0xf
|
||||||
|
PTRACE_GETNUMLWPS = 0xe
|
||||||
|
PTRACE_GETREGS = 0x21
|
||||||
|
PTRACE_GETXSTATE = 0x45
|
||||||
|
PTRACE_IO = 0xc
|
||||||
|
PTRACE_KILL = 0x8
|
||||||
|
PTRACE_LWPEVENTS = 0x18
|
||||||
|
PTRACE_LWPINFO = 0xd
|
||||||
|
PTRACE_SETFPREGS = 0x24
|
||||||
|
PTRACE_SETREGS = 0x22
|
||||||
|
PTRACE_SINGLESTEP = 0x9
|
||||||
|
PTRACE_TRACEME = 0x0
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
PIOD_READ_D = 0x1
|
||||||
|
PIOD_WRITE_D = 0x2
|
||||||
|
PIOD_READ_I = 0x3
|
||||||
|
PIOD_WRITE_I = 0x4
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
PL_FLAG_BORN = 0x100
|
||||||
|
PL_FLAG_EXITED = 0x200
|
||||||
|
PL_FLAG_SI = 0x20
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
TRAP_BRKPT = 0x1
|
||||||
|
TRAP_TRACE = 0x2
|
||||||
|
)
|
||||||
|
|
||||||
|
type PtraceLwpInfoStruct struct {
|
||||||
|
Lwpid int32
|
||||||
|
Event int32
|
||||||
|
Flags int32
|
||||||
|
Sigmask Sigset_t
|
||||||
|
Siglist Sigset_t
|
||||||
|
Siginfo __Siginfo
|
||||||
|
Tdname [20]int8
|
||||||
|
Child_pid int32
|
||||||
|
Syscall_code uint32
|
||||||
|
Syscall_narg uint32
|
||||||
|
}
|
||||||
|
|
||||||
|
type __Siginfo struct {
|
||||||
|
Signo int32
|
||||||
|
Errno int32
|
||||||
|
Code int32
|
||||||
|
Pid int32
|
||||||
|
Uid uint32
|
||||||
|
Status int32
|
||||||
|
Addr *byte
|
||||||
|
Value [8]byte
|
||||||
|
_ [40]byte
|
||||||
|
}
|
||||||
|
|
||||||
|
type Sigset_t struct {
|
||||||
|
Val [4]uint32
|
||||||
|
}
|
||||||
|
|
||||||
|
type Reg struct {
|
||||||
|
R15 int64
|
||||||
|
R14 int64
|
||||||
|
R13 int64
|
||||||
|
R12 int64
|
||||||
|
R11 int64
|
||||||
|
R10 int64
|
||||||
|
R9 int64
|
||||||
|
R8 int64
|
||||||
|
Rdi int64
|
||||||
|
Rsi int64
|
||||||
|
Rbp int64
|
||||||
|
Rbx int64
|
||||||
|
Rdx int64
|
||||||
|
Rcx int64
|
||||||
|
Rax int64
|
||||||
|
Trapno uint32
|
||||||
|
Fs uint16
|
||||||
|
Gs uint16
|
||||||
|
Err uint32
|
||||||
|
Es uint16
|
||||||
|
Ds uint16
|
||||||
|
Rip int64
|
||||||
|
Cs int64
|
||||||
|
Rflags int64
|
||||||
|
Rsp int64
|
||||||
|
Ss int64
|
||||||
|
}
|
||||||
|
|
||||||
|
type FpReg struct {
|
||||||
|
Env [4]uint64
|
||||||
|
Acc [8][16]uint8
|
||||||
|
Xacc [16][16]uint8
|
||||||
|
Spare [12]uint64
|
||||||
|
}
|
||||||
|
|
||||||
|
type PtraceIoDesc struct {
|
||||||
|
Op int32
|
||||||
|
Offs *byte
|
||||||
|
Addr *byte
|
||||||
|
Len uint
|
||||||
|
}
|
||||||
|
|
||||||
type Kevent_t struct {
|
type Kevent_t struct {
|
||||||
Ident uint64
|
Ident uint64
|
||||||
Filter int16
|
Filter int16
|
||||||
|
|||||||
@@ -322,11 +322,92 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
PTRACE_TRACEME = 0x0
|
PTRACE_ATTACH = 0xa
|
||||||
PTRACE_CONT = 0x7
|
PTRACE_CONT = 0x7
|
||||||
PTRACE_KILL = 0x8
|
PTRACE_DETACH = 0xb
|
||||||
|
PTRACE_GETFPREGS = 0x23
|
||||||
|
PTRACE_GETFSBASE = 0x47
|
||||||
|
PTRACE_GETLWPLIST = 0xf
|
||||||
|
PTRACE_GETNUMLWPS = 0xe
|
||||||
|
PTRACE_GETREGS = 0x21
|
||||||
|
PTRACE_GETXSTATE = 0x45
|
||||||
|
PTRACE_IO = 0xc
|
||||||
|
PTRACE_KILL = 0x8
|
||||||
|
PTRACE_LWPEVENTS = 0x18
|
||||||
|
PTRACE_LWPINFO = 0xd
|
||||||
|
PTRACE_SETFPREGS = 0x24
|
||||||
|
PTRACE_SETREGS = 0x22
|
||||||
|
PTRACE_SINGLESTEP = 0x9
|
||||||
|
PTRACE_TRACEME = 0x0
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
PIOD_READ_D = 0x1
|
||||||
|
PIOD_WRITE_D = 0x2
|
||||||
|
PIOD_READ_I = 0x3
|
||||||
|
PIOD_WRITE_I = 0x4
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
PL_FLAG_BORN = 0x100
|
||||||
|
PL_FLAG_EXITED = 0x200
|
||||||
|
PL_FLAG_SI = 0x20
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
TRAP_BRKPT = 0x1
|
||||||
|
TRAP_TRACE = 0x2
|
||||||
|
)
|
||||||
|
|
||||||
|
type PtraceLwpInfoStruct struct {
|
||||||
|
Lwpid int32
|
||||||
|
Event int32
|
||||||
|
Flags int32
|
||||||
|
Sigmask Sigset_t
|
||||||
|
Siglist Sigset_t
|
||||||
|
Siginfo __Siginfo
|
||||||
|
Tdname [20]int8
|
||||||
|
Child_pid int32
|
||||||
|
Syscall_code uint32
|
||||||
|
Syscall_narg uint32
|
||||||
|
}
|
||||||
|
|
||||||
|
type __Siginfo struct {
|
||||||
|
Signo int32
|
||||||
|
Errno int32
|
||||||
|
Code int32
|
||||||
|
Pid int32
|
||||||
|
Uid uint32
|
||||||
|
Status int32
|
||||||
|
Addr *byte
|
||||||
|
Value [4]byte
|
||||||
|
X_reason [32]byte
|
||||||
|
}
|
||||||
|
|
||||||
|
type Sigset_t struct {
|
||||||
|
Val [4]uint32
|
||||||
|
}
|
||||||
|
|
||||||
|
type Reg struct {
|
||||||
|
R [13]uint32
|
||||||
|
R_sp uint32
|
||||||
|
R_lr uint32
|
||||||
|
R_pc uint32
|
||||||
|
R_cpsr uint32
|
||||||
|
}
|
||||||
|
|
||||||
|
type FpReg struct {
|
||||||
|
Fpr_fpsr uint32
|
||||||
|
Fpr [8][3]uint32
|
||||||
|
}
|
||||||
|
|
||||||
|
type PtraceIoDesc struct {
|
||||||
|
Op int32
|
||||||
|
Offs *byte
|
||||||
|
Addr *byte
|
||||||
|
Len uint
|
||||||
|
}
|
||||||
|
|
||||||
type Kevent_t struct {
|
type Kevent_t struct {
|
||||||
Ident uint32
|
Ident uint32
|
||||||
Filter int16
|
Filter int16
|
||||||
|
|||||||
@@ -322,11 +322,93 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
PTRACE_TRACEME = 0x0
|
PTRACE_ATTACH = 0xa
|
||||||
PTRACE_CONT = 0x7
|
PTRACE_CONT = 0x7
|
||||||
PTRACE_KILL = 0x8
|
PTRACE_DETACH = 0xb
|
||||||
|
PTRACE_GETFPREGS = 0x23
|
||||||
|
PTRACE_GETFSBASE = 0x47
|
||||||
|
PTRACE_GETLWPLIST = 0xf
|
||||||
|
PTRACE_GETNUMLWPS = 0xe
|
||||||
|
PTRACE_GETREGS = 0x21
|
||||||
|
PTRACE_GETXSTATE = 0x45
|
||||||
|
PTRACE_IO = 0xc
|
||||||
|
PTRACE_KILL = 0x8
|
||||||
|
PTRACE_LWPEVENTS = 0x18
|
||||||
|
PTRACE_LWPINFO = 0xd
|
||||||
|
PTRACE_SETFPREGS = 0x24
|
||||||
|
PTRACE_SETREGS = 0x22
|
||||||
|
PTRACE_SINGLESTEP = 0x9
|
||||||
|
PTRACE_TRACEME = 0x0
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
PIOD_READ_D = 0x1
|
||||||
|
PIOD_WRITE_D = 0x2
|
||||||
|
PIOD_READ_I = 0x3
|
||||||
|
PIOD_WRITE_I = 0x4
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
PL_FLAG_BORN = 0x100
|
||||||
|
PL_FLAG_EXITED = 0x200
|
||||||
|
PL_FLAG_SI = 0x20
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
TRAP_BRKPT = 0x1
|
||||||
|
TRAP_TRACE = 0x2
|
||||||
|
)
|
||||||
|
|
||||||
|
type PtraceLwpInfoStruct struct {
|
||||||
|
Lwpid int32
|
||||||
|
Event int32
|
||||||
|
Flags int32
|
||||||
|
Sigmask Sigset_t
|
||||||
|
Siglist Sigset_t
|
||||||
|
Siginfo __Siginfo
|
||||||
|
Tdname [20]int8
|
||||||
|
Child_pid int32
|
||||||
|
Syscall_code uint32
|
||||||
|
Syscall_narg uint32
|
||||||
|
}
|
||||||
|
|
||||||
|
type __Siginfo struct {
|
||||||
|
Signo int32
|
||||||
|
Errno int32
|
||||||
|
Code int32
|
||||||
|
Pid int32
|
||||||
|
Uid uint32
|
||||||
|
Status int32
|
||||||
|
Addr *byte
|
||||||
|
Value [8]byte
|
||||||
|
X_reason [40]byte
|
||||||
|
}
|
||||||
|
|
||||||
|
type Sigset_t struct {
|
||||||
|
Val [4]uint32
|
||||||
|
}
|
||||||
|
|
||||||
|
type Reg struct {
|
||||||
|
X [30]uint64
|
||||||
|
Lr uint64
|
||||||
|
Sp uint64
|
||||||
|
Elr uint64
|
||||||
|
Spsr uint32
|
||||||
|
}
|
||||||
|
|
||||||
|
type FpReg struct {
|
||||||
|
Fp_q [32]uint128
|
||||||
|
Fp_sr uint32
|
||||||
|
Fp_cr uint32
|
||||||
|
}
|
||||||
|
|
||||||
|
type PtraceIoDesc struct {
|
||||||
|
Op int32
|
||||||
|
Offs *byte
|
||||||
|
Addr *byte
|
||||||
|
Len uint
|
||||||
|
}
|
||||||
|
|
||||||
type Kevent_t struct {
|
type Kevent_t struct {
|
||||||
Ident uint64
|
Ident uint64
|
||||||
Filter int16
|
Filter int16
|
||||||
|
|||||||
Reference in New Issue
Block a user