mirror of
https://github.com/golang/sys.git
synced 2026-02-08 11:46:04 +03:00
unix: add ptrace support for FreeBSD
Change-Id: Iaf95e3e7bd3d33ad7e214c45ed87b9e967b16631
GitHub-Last-Rev: e0308dc7ad
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
|
||||
|
||||
exited = 0
|
||||
killed = 9
|
||||
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) 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) 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)
|
||||
}
|
||||
|
||||
//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
|
||||
*/
|
||||
|
||||
@@ -243,11 +243,55 @@ const (
|
||||
// Ptrace requests
|
||||
|
||||
const (
|
||||
PTRACE_TRACEME = C.PT_TRACE_ME
|
||||
PTRACE_CONT = C.PT_CONTINUE
|
||||
PTRACE_KILL = C.PT_KILL
|
||||
PTRACE_ATTACH = C.PT_ATTACH
|
||||
PTRACE_CONT = C.PT_CONTINUE
|
||||
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)
|
||||
|
||||
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
|
||||
|
||||
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) {
|
||||
var _p0 unsafe.Pointer
|
||||
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
|
||||
|
||||
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) {
|
||||
var _p0 unsafe.Pointer
|
||||
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
|
||||
|
||||
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) {
|
||||
var _p0 unsafe.Pointer
|
||||
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
|
||||
|
||||
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) {
|
||||
_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
|
||||
if e1 != 0 {
|
||||
|
||||
@@ -324,11 +324,108 @@ const (
|
||||
)
|
||||
|
||||
const (
|
||||
PTRACE_TRACEME = 0x0
|
||||
PTRACE_CONT = 0x7
|
||||
PTRACE_KILL = 0x8
|
||||
PTRACE_ATTACH = 0xa
|
||||
PTRACE_CONT = 0x7
|
||||
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 {
|
||||
Ident uint32
|
||||
Filter int16
|
||||
|
||||
@@ -322,11 +322,115 @@ const (
|
||||
)
|
||||
|
||||
const (
|
||||
PTRACE_TRACEME = 0x0
|
||||
PTRACE_CONT = 0x7
|
||||
PTRACE_KILL = 0x8
|
||||
PTRACE_ATTACH = 0xa
|
||||
PTRACE_CONT = 0x7
|
||||
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 {
|
||||
Ident uint64
|
||||
Filter int16
|
||||
|
||||
@@ -322,11 +322,92 @@ const (
|
||||
)
|
||||
|
||||
const (
|
||||
PTRACE_TRACEME = 0x0
|
||||
PTRACE_CONT = 0x7
|
||||
PTRACE_KILL = 0x8
|
||||
PTRACE_ATTACH = 0xa
|
||||
PTRACE_CONT = 0x7
|
||||
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 {
|
||||
Ident uint32
|
||||
Filter int16
|
||||
|
||||
@@ -322,11 +322,93 @@ const (
|
||||
)
|
||||
|
||||
const (
|
||||
PTRACE_TRACEME = 0x0
|
||||
PTRACE_CONT = 0x7
|
||||
PTRACE_KILL = 0x8
|
||||
PTRACE_ATTACH = 0xa
|
||||
PTRACE_CONT = 0x7
|
||||
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 {
|
||||
Ident uint64
|
||||
Filter int16
|
||||
|
||||
Reference in New Issue
Block a user