HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //usr/local/lib/python3.10/dist-packages/packaging/__pycache__/_elffile.cpython-310.pyc
o

���g��@s�dZddlmZddlZddlZddlZddlmZGdd�de�Z	Gdd�dej
�ZGd	d
�d
ej
�ZGdd�dej
�Z
Gd
d�d�ZdS)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__�rr�=/usr/local/lib/python3.10/dist-packages/packaging/_elffile.pyrsrc@�eZdZdZdZdS)�EIClass��N)rrr�C32�C64rrrr	r�rc@r
)�EIDatarr
N)rrr�Lsb�Msbrrrr	rrrc@s eZdZdZdZdZdZdZdS)�EMachine���(�>�N)rrr�I386�S390�Arm�X8664�AArc64rrrr	r!src@s2eZdZdZddd�Zddd�Zeddd��ZdS)�ELFFilez.
    Representation of an ELF executable.
    �f�	IO[bytes]�return�Nonec
Cs&||_z|�d�}Wntjy}ztd�|�d}~wwt|dd��}|dkr0td|����|d|_|d|_zddd	d
d�|j|jf\}|_|_	Wnt
yh}ztd|j�d
|j�d��|�d}~wwz|�|�\
}|_}}|_}|_
}|_|_WdStjy�}ztd�|�d}~ww)N�16Bzunable to parse identification�sELFzinvalid magic: �)z<HHIIIIIHHHz	<IIIIIIII�rrr%)z>HHIIIIIHHHz	>IIIIIIIIr')z<HHIQQQIHHHz	<IIQQQQQQ�rr
r&)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�_read�struct�errorr�bytes�capacity�encoding�_p_fmt�_p_idx�KeyError�machine�_e_phoff�flags�_e_phentsize�_e_phnum)�selfr �ident�e�magic�e_fmt�_rrr	�__init__.s^
��

�
�
������

��zELFFile.__init__�fmt�str�tuple[int, ...]cCst�||j�t�|���S)N)r,�unpackr*�read�calcsize)r9r@rrr	r+\sz
ELFFile._read�
str | Nonec	Cs�t|j�D]H}|j�|j|j|�z|�|j�}Wn
tj	y%Yqw||j
ddkr0q|j�||j
d�t�|j�
||j
d���d�SdS)zH
        The path recorded in the ``PT_INTERP`` section header.
        rrrr
�N)�ranger8r*�seekr5r7r+r1r,r-r2�os�fsdecoderD�strip)r9�index�datarrr	�interpreter_s�&zELFFile.interpreterN)r r!r"r#)r@rAr"rB)r"rF)rrr�__doc__r?r+�propertyrOrrrr	r)s

.r)rP�
__future__r�enumrJr,�typingr�
ValueErrorr�IntEnumrrrrrrrr	�<module>s