K i dZddlmZddlZddlZddlZddlmZGddeZ GddejZ Gd d ejZ Gd d ejZ Gd dZy)a; ELF file parser. This provides a class ``ELFFile`` that parses an ELF executable in a similar interface to ``ZipFile``. Only the read interface is implemented. Based on: https://gist.github.com/lyssdod/f51579ae8d93c8657a5564aefc2ffbca ELF header: https://refspecs.linuxfoundation.org/elf/gabi4+/ch4.eheader.html ) annotationsN)IOc eZdZy) ELFInvalidN)__name__ __module__ __qualname__X/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/packaging/_elffile.pyrrsr rceZdZdZdZy)EIClassN)rrr C32C64r r r rr C Cr rceZdZdZdZy)EIDatarrN)rrr LsbMsbr r r rrrr rc eZdZdZdZdZdZdZy)EMachine(>N)rrr I386S390ArmX8664AArc64r r r rr!s D D C E Fr rc2eZdZdZddZddZeddZy) ELFFilez. Representation of an ELF executable. c v||_ |jd}t |dd}|dk7rt d||d|_|d|_ ddd d d |j |jf\}|_|_ |j|\ }|_ }}|_ }|_ }|_|_y#tj$r}t d|d}~wwxYw#t$r,}t d |j d |jd|d}~wwxYw#tj$r}t d|d}~wwxYw)N16Bzunable to parse identificationsELFzinvalid magic: )z HHIIIIIHHHz >IIIIIIIIr*)z HHIQQQIHHHz >IIQQQQQQr+))rr)rr)rr)rrzunrecognized capacity (z) or encoding ()z/unable to parse machine and section information)_f_readstructerrorrbytescapacityencoding_p_fmt_p_idxKeyErrormachine_e_phoffflags _e_phentsize_e_phnum)selffidentemagice_fmt_s r __init__zELFFile.__init__.sg FJJu%EeBQi  J ui89 9a a   @??? / }}dmm, /. +E4;  W 5!    ! G|| F=>A E F& )$-- VWX  $|| WNOUV V WsGB5.C?5D5C CC D%'D  DD8' D33D8ctj||jjtj|S)N)r/unpackr-readcalcsize)r<fmts r r.z ELFFile._read[s)}}S$'',,vs/C"DEEr c*t|jD]}|jj|j|j |zz |j |j}||jddk7rj|jj||jdtj|jj||jdjdcSy#tj$rYwxYw)zH The path recorded in the ``PT_INTERP`` section header. rrrrN)ranger;r-seekr8r:r.r4r/r0r5osfsdecoderFstrip)r<indexdatas r interpreterzELFFile.interpreter^s 4==) OE GGLL):):U)BB C zz$++.DKKN#q( GGLLdkk!n- .;;tww||DQ,@ABHHN N O <<  sC<<DDN)r=z IO[bytes]returnNone)rHstrrSztuple[int, ...])rSz str | None)rrr __doc__rCr.propertyrRr r r r%r%)s(+WZFr r%)rV __future__renumrMr/typingr ValueErrorrIntEnumrrrr%r r r r]sc#    dll  T\\ t||DDr