a if @sdZddlmZddlZddlZddlZddlmZGdddeZ Gdddej Z Gd d d ej Z Gd d d ej Z Gd ddZdS)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@s eZdZdS) ELFInvalidN)__name__ __module__ __qualname__rrv/sparta/input/_build_configuration/image_build+validate/lib/bmcenv/lib64/python3.9/site-packages/packaging/_elffile.pyrsrc@seZdZdZdZdS)EIClassN)rrrC32C64rrrr r sr c@seZdZdZdZdS)EIDatar r N)rrrLsbMsbrrrr rsrc@s eZdZdZdZdZdZdZdS)EMachine(>N)rrrI386S390ArmX8664AArc64rrrr r!s rc@sBeZdZdZdddddZddd d d Zed d ddZdS)ELFFilez. Representation of an ELF executable. z IO[bytes]None)freturnc Cs&||_z|d}Wntjy0tdYn0t|dd}|dkrXtd||d|_|d|_z(ddd d d |j|jf\}|_|_ Wn,t ytd |jd |jdYn0z,||\ }|_ }}|_ }|_ }|_|_Wn2tjy }ztd|WYd}~n d}~00dS)N16Bzunable to parse identificationsELFzinvalid magic: )z HHIIIIIHHHz >IIIIIIIIr$)z HHIQQQIHHHz >IIQQQQQQr%))r r )r r )r r )r r zunrecognized capacity (z) or encoding ()z/unable to parse machine and section information)_f_readstructerrorrbytescapacityencoding_p_fmt_p_idxKeyErrormachine_e_phoffflags _e_phentsize_e_phnum)selfridentmagice_fmt_errr __init__.sP        zELFFile.__init__strztuple[int, ...])fmtr cCst||jt|S)N)r)unpackr'readcalcsize)r6r>rrr r(\sz ELFFile._readz str | None)r c Cst|jD]}|j|j|j|z||j}Wntj yNYq Yn0||j ddkrdq |j||j dt |j ||j ddSdS)zH The path recorded in the ``PT_INTERP`` section header. rrr r N)ranger5r'seekr2r4r(r.r)r*r/osfsdecoder@strip)r6indexdatarrr interpreter_s &zELFFile.interpreterN)rrr__doc__r<r(propertyrJrrrr r)s .r)rK __future__renumrEr)typingr ValueErrorrIntEnumr rrrrrrr s