Current File : //usr/local/lib/python3.6/site-packages/ptrace/binding/__pycache__/func.cpython-36.pyc
3

�d�#�@sddlmZddlmZmZmZmZmZddlm	Z	ddl
mZddlm
Z
mZmZddlmZmZmZmZer�ddlmZmZnHer�ddlmZn6e
r�dd	lmZmZmZmZes�dd
lmZne d��e!dd
�ej"D��Z#dZ$dZ%dZ&dZ'dZ(dZ)dZ*dZ+dZ,eZ-dZ.dZ/dZ0dZ1dZ2dZ3dZ4dZ5dZ6e$�r4dZ7e�rhdZ8dZ9dZ(dZ:dZ;dZ<dZ=dZ&dZ>dZ$dZ7nde�r�dZ8dZ9d Z?e�s�dZ(dZ:dZ;dZ&d!Z>n6e�s�dZ(dZ*d!Z:d"Z;dZ)dZ+d#Z@d$ZAdZBd%Z8d&Z9d'Z?e
�rd(Z<d)Z=e�s�d*ZCd+ZDdZ'd,ZEd-ZFdZ%d.ZGd/ZHd0Z,dZIdZJdZKdZLd%ZMdZNd1ZOdZPdZQdZRdZSdZTdZUydd2lVmZWdZXWnPeYk
�r�dZXdd3lmZZZm[Z[dd4l\m]Z]e]jZWe[e[e[e[feW_^e[eW__YnXdud5d6�Zd7d8�Z`d9d:�Zadvd;d<�Zbd=d>�Zcd?d@�ZddAdB�ZedCdD�ZfdEdF�ZgdGdH�ZhdIdJ�ZidKdL�ZjdMdN�Zke%�r(dOdP�ZldQdR�ZmdSdT�Zne
�r�dwdUdV�ZodxdWdX�ZpdYdZ�Zqd[d\�Zrd]d^�Zsd_d`�Zte�sxdadb�Zudcdd�Zve(�r�dedf�Zwne)�r�dgdf�Zwe*�r�dhdi�Zxne+�r�djdi�Zxe$�r�dkdl�Zyn8dydmdV�ZodzdndX�Zpe(�r�dodf�Zwdpdi�Zxe$�r�dqdl�Zye&�r
drds�ZzdtS){�)�strerror)�	addressof�c_int�	get_errno�	set_errno�sizeof)�PtraceError)�
formatAddress)�
RUNNING_LINUX�RUNNING_BSD�RUNNING_OPENBSD)�
CPU_64BITS�
CPU_WORD_SIZE�CPU_POWERPC�CPU_AARCH64)�reg�fpreg)r)�user_regs_struct�user_fpregs_struct�siginfo�iovec_struct)�user_fpxregs_structzUnknown OS!ccs|]\}}|VqdS)N�)�.0�name�typerr�</tmp/pip-build-in2aja_b/python-ptrace/ptrace/binding/func.py�	<genexpr>srTF���������	�
�!�"�#�$�� ���
iBiB�������iBiBiBiBi@�@)�ptrace)�c_long�c_ulong)�libcc
Cs�trbytd�t|||||�}Wq�tk
r^}z"t|�}t�}t|||d��WYdd}~Xq�XnVt||||�}t|�j}	|	dkr�t�}|s�|r�d|||||t	|�f}t|||d��|S)Nr)�errno�pidrz,ptrace(cmd=%s, pid=%s, %r, %r) error #%s: %s���)
�HAS_CPTRACEr�_ptrace�
ValueError�strrrr:�valuer)
�commandr>Zarg1Zarg2�check_errno�resultZerrobj�messager=Z
result_signedrrrr9�s$"

r9cCstt�dS)N)r9�PTRACE_TRACEMErrrr�ptrace_traceme�srJcCstt|�dS)N)r9�
PTRACE_ATTACH)r>rrr�
ptrace_attach�srLcCstt|d|�dS)Nr)r9�
PTRACE_DETACH)r>�signalrrr�
ptrace_detach�srOcCs,|trtdt|�|d��t|||dd�S)Nz8ptrace can't read a word from an unaligned address (%s)!)r>T)rF)rrr	r9)rEr>�addressrrr�_peek�s
rQcCs.|trtdt|�|d��t||||�dS)Nz7ptrace can't write a word to an unaligned address (%s)!)r>)rrr	r9)rEr>rP�wordrrr�_poke�s
rScCstt||�S)N)rQ�PTRACE_PEEKTEXT)r>rPrrr�ptrace_peektext�srUcCstt||�S)N)rQ�PTRACE_PEEKDATA)r>rPrrr�ptrace_peekdata�srWcCstt||�S)N)rQ�PTRACE_PEEKUSER)r>rPrrr�ptrace_peekuser�srYcCstt|||�dS)N)rS�PTRACE_POKETEXT)r>rPrRrrr�ptrace_poketext�sr[cCstt|||�dS)N)rS�PTRACE_POKEDATA)r>rPrRrrr�ptrace_pokedata�sr]cCstt|||�dS)N)rS�PTRACE_POKEUSER)r>rPrRrrr�ptrace_pokeuser�sr_cCstt|�dS)N)r9�PTRACE_KILL)r>rrr�ptrace_kill�sracCs|d?S)Nr1r)�statusrrr�WPTRACEEVENT�srccCstt|d|�dS)Nr)r9�PTRACE_SETOPTIONS)r>�optionsrrr�ptrace_setoptions�srfcCst�}tt|dt|��|jS)Nr)�pid_tr9�PTRACE_GETEVENTMSGrrD)r>Znew_pidrrr�ptrace_geteventmsg�sricCstt|d|�dS)Nr)r9�PTRACE_SYSCALL)r>�signumrrr�ptrace_syscall�srlcCstt|d|�dS)Nr)r9�PTRACE_CONT)r>rkrrr�ptrace_cont�srncCst�}tt|dt|��|S)Nr)rr9�PTRACE_GETSIGINFOr)r>�inforrr�ptrace_getsiginfo�srqcCstt|dt|��dS)Nr)r9�PTRACE_SETSIGINFOr)r>rprrr�ptrace_setsiginfo�srscCst�}tt|dt|��|S)Nr)rr9�PTRACE_GETFPREGSr)r>�fpregsrrr�ptrace_getfpregs�srvcCstt|dt|��dS)Nr)r9�PTRACE_SETFPREGSr)r>rurrr�ptrace_setfpregssrxcCst�}tt|dt|��|S)Nr)rr9�PTRACE_GETFPXREGSr)r>�fpxregsrrr�ptrace_getfpxregssr{cCstt|dt|��dS)Nr)r9�PTRACE_SETFPXREGSr)r>rzrrr�ptrace_setfpxregs
sr}cCst�}tt|dt|��|S)Nr)�ptrace_registers_tr9�PTRACE_GETREGSr)r>�regsrrr�ptrace_getregssr�cCsBt�}t�}t|dt|��t|dt|��tt|tt|��|S)N�buf�len)r~r�setattrrrr9�PTRACE_GETREGSET�NT_PRSTATUS)r>r��iovrrrr�scCstt|dt|��dS)Nr)r9�PTRACE_SETREGSr)r>r�rrr�ptrace_setregs sr�cCs<t�}t|dt|��t|dt|��tt|tt|��dS)Nr�r�)rr�rrr9�PTRACE_SETREGSETr�)r>r�r�rrrr�$scCstt|�dS)N)r9�PTRACE_SINGLESTEP)r>rrr�ptrace_singlestep+sr�cCstt|d|�dS)Nr)r9rj)r>rkrrrrl/scCstt|d|�dS)Nr)r9rm)r>rkrrrrn2scCst�}tt|t|��|S)N)r~r9rr)r>r�rrrr�6scCstt|t|��dS)N)r9r�r)r>r�rrrr�;scCstt|d�dS)Nr)r9r�)r>rrrr�?scCstt|t|��dS)N)r9�	PTRACE_IOr)r>Zio_descrrr�	ptrace_ioCsr�N)rrrF)r)r)r)r)r){�osr�ctypesrrrrrr9rZptrace.ctypes_toolsr	Zptrace.os_toolsr
rrZptrace.cpu_infor
rrrZptrace.binding.openbsd_structrr~rrZptrace.binding.freebsd_structZptrace.binding.linux_structrrrr�NotImplementedError�tuple�_fields_ZREGISTER_NAMESZHAS_PTRACE_SINGLESTEPZHAS_PTRACE_EVENTSZ
HAS_PTRACE_IOZHAS_PTRACE_SIGINFOZHAS_PTRACE_GETREGSZHAS_PTRACE_GETREGSETZHAS_PTRACE_SETREGSZHAS_PTRACE_SETREGSETZTHREAD_TRACE_FLAGSrgrIrTrVrXrZr\r^rmr`r�rKrMrr�rtrwr�rjr�r�r�ryr|rorrrdrhZPTRACE_O_TRACESYSGOODZPTRACE_O_TRACEFORKZPTRACE_O_TRACEVFORKZPTRACE_O_TRACECLONEZPTRACE_O_TRACEEXECZPTRACE_O_TRACEVFORKDONEZPTRACE_O_TRACEEXITZPTRACE_EVENT_FORKZPTRACE_EVENT_VFORKZPTRACE_EVENT_CLONEZPTRACE_EVENT_EXECZPTRACE_EVENT_VFORK_DONEZPTRACE_EVENT_EXITZcptracerAr@�ImportErrorr:r;Zptrace.ctypes_libcr<�argtypes�restyperJrLrOrQrSrUrWrYr[r]r_rarcrfrirlrnrqrsrvrxr{r}r�r�r�r�rrrr�<module>s2