Current File : //usr/lib/python3/dist-packages/packaging/__pycache__/_elffile.cpython-312.pyc
�

R"f�����dZddlZddlZddlZddlmZmZmZGd�de�Z	Gd�dej�ZGd�d	ej�ZGd
�dej�Z
Gd�d
�Zy)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
�N)�IO�Optional�Tuplec��eZdZy)�
ELFInvalidN)�__name__�
__module__�__qualname__���4/usr/lib/python3/dist-packages/packaging/_elffile.pyrrs��rrc��eZdZdZdZy)�EIClass��N)rr	r
�C32�C64rrr
rr���
�C�
�Crrc��eZdZdZdZy)�EIDatarrN)rr	r
�Lsb�Msbrrr
rrrrrc� �eZdZdZdZdZdZdZy)�EMachine���(�>�N)rr	r
�I386�S390�Arm�X8664�AArc64rrr
rrs���D�
�D�
�C��E�
�Frrc�\�eZdZdZdeeddfd�Zdedee	dffd�Z
edeefd	��Z
y)
�ELFFilez.
    Representation of an ELF executable.
    �f�returnNc
�b�||_	|jd�}t|dd�}|dk7rt	d|����|d|_|d|_	ddd	d
d�|j|jf\}|_|_		|j|�\
}|_}}|_}|_
}|_|_y#tj$rt	d��wxYw#t$r't	d|j�d
|j�d���wxYw#tj$r}t	d�|�d}~wwxYw)N�16Bzunable to parse identification�sELFzinvalid magic: �)z<HHIIIIIHHHz	<IIIIIIII�rrr+)z>HHIIIIIHHHz	>IIIIIIIIr-)z<HHIQQQIHHHz	<IIQQQQQQ�rrr,)z>HHIQQQIHHHz	>IIQQQQQQr.))rr)rr)rr)rrzunrecognized capacity (z) or encoding (�)z/unable to parse machine and section information)�_f�_read�struct�errorr�bytes�capacity�encoding�_p_fmt�_p_idx�KeyError�machine�_e_phoff�flags�_e_phentsize�_e_phnum)�selfr'�ident�magic�e_fmt�_�es       r
�__init__zELFFile.__init__,sb�����	?��J�J�u�%�E��e�B�Q�i� ���J����u�i�8�9�9��a���
��a���
�	�
@�?�?�?�	/�
�}�}�d�m�m�,�/.�+�E�4�;���	W��
�
�5�!�
�������
���
���!��
��I�|�|�	?��=�>�>�	?��&�	��)�$�-�-��9�!�]�]�O�1�.��
�	��&�|�|�	W��N�O�UV�V��	W�s/�B5�.C�?5D
�5C�0D�
D.�D)�)D.�fmt.c��tj||jjtj|���S)N)r2�unpackr0�read�calcsize)r?rFs  r
r1z
ELFFile._readZs)���}�}�S�$�'�'�,�,�v���s�/C�"D�E�Erc�*�t|j�D]�}|jj|j|j
|zz�	|j
|j�}||jddk7r�j|jj||jd�tj|jj||jd��jd�cSy#tj$rY��wxYw)zH
        The path recorded in the ``PT_INTERP`` section header.
        rrrr�N)�ranger>r0�seekr;r=r1r7r2r3r8�os�fsdecoderI�strip)r?�index�datas   r
�interpreterzELFFile.interpreter]s���
�4�=�=�)�		O�E��G�G�L�L�����):�):�U�)B�B�C�
��z�z�$�+�+�.���D�K�K��N�#�q�(���G�G�L�L��d�k�k�!�n�-�.��;�;�t�w�w�|�|�D����Q��,@�A�B�H�H��N�N�		O���
�<�<�
��
�s�C<�<D�D)rr	r
�__doc__rr4rE�strr�intr1�propertyrrTrrr
r&r&'s_���,W�"�U�)�,W��,W�\F��F��s�C�x��F���X�c�]���rr&)rU�enumrOr2�typingrrr�
ValueErrorr�IntEnumrrrr&rrr
�<module>r]sc����	�
�&�&�	��	��d�l�l��
�T�\�\��
�t�|�|��E�Er