HEX
Server: LiteSpeed
System: Linux br-asc-web1845.main-hosting.eu 5.14.0-611.42.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Mar 24 05:30:20 EDT 2026 x86_64
User: u790421558 (790421558)
PHP: 8.2.30
Disabled: system, exec, shell_exec, passthru, mysql_list_dbs, ini_alter, dl, symlink, link, chgrp, leak, popen, apache_child_terminate, virtual, mb_send_mail
Upload Files
File: //lib/python3.9/site-packages/elftools/elf/__pycache__/structs.cpython-39.opt-1.pyc
a

�#�_�M�@s�ddlmZmZmZmZmZmZmZmZm	Z	m
Z
mZmZm
Z
mZmZmZmZmZmZmZmZddlmZddlTGdd�de�ZdS)�)�UBInt8�UBInt16�UBInt32�UBInt64�ULInt8�ULInt16�ULInt32�ULInt64�SBInt32�SLInt32�SBInt64�SLInt64�Struct�Array�Enum�Padding�	BitStruct�BitField�Value�String�CString)�ULEB128�)�*c@s�eZdZdZd5dd�Zdd�Zdd	�Zd
d�Zd6d
d�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd7d+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�ZdS)8�
ELFStructsa Accessible attributes:

            Elf_{byte|half|word|word64|addr|offset|sword|xword|xsword}:
                Data chunks, as specified by the ELF standard, adjusted for
                correct endianness and word-size.

            Elf_Ehdr:
                ELF file header

            Elf_Phdr:
                Program header

            Elf_Shdr:
                Section header

            Elf_Sym:
                Symbol table entry

            Elf_Rel, Elf_Rela:
                Entries in relocation sections
    T� cCs"||_||_d|_d|_d|_dS�N��
little_endian�elfclass�e_type�	e_machine�
e_ident_osabi)�selfrr�r$�8/usr/lib/python3.9/site-packages/elftools/elf/structs.py�__init__*s
zELFStructs.__init__cCs|j|j|j|j|jfSrr�r#r$r$r%�__getstate__2szELFStructs.__getstate__cCs,|\|_|_}}}|��|�|||�dSr)rr�create_basic_structs�create_advanced_structs)r#�stater r!Ze_osabir$r$r%�__setstate__5szELFStructs.__setstate__cCs�|jrjt|_t|_t|_t|_|j	dkr,tnt|_
|j
|_t|_
|j	dkrNtnt|_|j	dkrbtnt|_nbt|_t|_t|_t|_|j	dkr�tnt|_
|j
|_t|_
|j	dkr�tnt|_|j	dkr�tnt|_|��|��|��dS)zr Create word-size related structs and ehdr struct needed for
            initial determining of ELF type.
        rN)rr�Elf_byter�Elf_halfr�Elf_wordr	Z
Elf_word64r�Elf_addr�
Elf_offsetrZ	Elf_sword�	Elf_xwordr
�
Elf_sxwordrrrrr
r�_create_ehdr�_create_leb128�_create_ntbsr'r$r$r%r):s,zELFStructs.create_basic_structsNcCs�||_||_||_|��|��|��|��|��|��|�	�|�
�|��|��|�
�|�|�|��|��|��|��dS)z� Create all ELF structs except the ehdr. They may possibly depend
            on provided e_type and/or e_machine parsed from ehdr.
        N)r r!r"�_create_phdr�_create_shdr�_create_chdr�_create_sym�_create_rel�_create_dyn�_create_sunw_syminfo�_create_gnu_verneed�_create_gnu_verdef�_create_gnu_versym�_create_gnu_abi�_create_note�
_create_stabs�_create_arm_attributes�_create_elf_hash�_create_gnu_hash)r#r r!r"r$r$r%r*Vs&
z"ELFStructs.create_advanced_structscCstdtdtd|�d��t|�d�fit��t|�d�fit��t|�d�fit��t|�d�fit��|�d	�td
��t|�	d�fit
��t|�	d�fit��t|�d
�fit��|�
d�|�d�|�d�|�d�|�	d�|�	d�|�	d�|�	d�|�	d�|�	d��|_dS)N�Elf_EhdrZe_ident�ZEI_MAGZEI_CLASSZEI_DATAZ
EI_VERSIONZEI_OSABIZ
EI_ABIVERSION�r r!Z	e_versionZe_entryZe_phoffZe_shoffZe_flagsZe_ehsizeZe_phentsizeZe_phnumZe_shentsizeZe_shnumZ
e_shstrndx)rrr-rZ
ENUM_EI_CLASSZENUM_EI_DATAZENUM_E_VERSIONZ
ENUM_EI_OSABIrr.ZENUM_E_TYPEZENUM_E_MACHINEr/r0r1rGr'r$r$r%r4qs0�	�zELFStructs._create_ehdrcCs
t|_dSr)r�Elf_uleb128r'r$r$r%r5�szELFStructs._create_leb128cCs
t|_dSr)r�Elf_ntbsr'r$r$r%r6�szELFStructs._create_ntbscCs�t}|jdkrt}n|jdkr$t}n|jdkr2t}|jdkr�tdt|�d�fi|��|�	d�|�
d�|�
d	�|�d
�|�d�|�d�|�d
��	|_nVtdt|�d�fi|��|�d�|�	d�|�
d�|�
d	�|�d
�|�d�|�d
��	|_dS)N�EM_ARMZ
EM_AARCH64�EM_MIPSr�Elf_PhdrZp_typeZp_offsetZp_vaddrZp_paddrZp_fileszZp_memszZp_flagsZp_align)
ZENUM_P_TYPE_BASEr!ZENUM_P_TYPE_ARMZENUM_P_TYPE_AARCH64ZENUM_P_TYPE_MIPSrrrr/r1r0rNr2)r#Zp_type_dictr$r$r%r7�s8



��zELFStructs._create_phdrcCs�t}|jdkrt}n|jdkr$t}n|jdkr2t}td|�d�t|�d�fi|��|�d�|�	d�|�
d	�|�d
�|�d�|�d�|�d
�|�d��|_dS)zmSection header parsing.

        Depends on e_machine because of machine-specific values in sh_type.
        rLZ	EM_X86_64rM�Elf_ShdrZsh_nameZsh_typeZsh_flagsZsh_addrZ	sh_offsetZsh_sizeZsh_linkZsh_infoZsh_addralignZ
sh_entsizeN)ZENUM_SH_TYPE_BASEr!ZENUM_SH_TYPE_ARMZENUM_SH_TYPE_AMD64ZENUM_SH_TYPE_MIPSrr/rr2r0r1rO)r#Zsh_type_dictr$r$r%r8�s&


�zELFStructs._create_shdrcCsZt|�d�fit��|�d�|�d�g}|jdkrD|�d|�d��tdg|�R�|_dS)NZch_typeZch_sizeZch_addralign�@rZch_reserved�Elf_Chdr)rr/ZENUM_ELFCOMPRESS_TYPEr2r�insertrrQ)r#�fieldsr$r$r%r9�s�
zELFStructs._create_chdrcCs|jdkr0|�d�tddd��tddd��g}n�|jdkr�|�d	�|�d
�|�d�|�d�|�d
�tddd��tddd��tddd��tddd��tddd��tddd��g}n$|�d�tddd��tddd��g}td|�d�g|�R�|_||�	d�g}td|�d�g|�R�|_
dS)Nr�r_infoZ
r_info_symcSs|dd?d@S)NrT�i���r$��ctxr$r$r%�<lambda>��z(ELFStructs._create_rel.<locals>.<lambda>Zr_info_typecSs|dd@S)NrT�r$rVr$r$r%rX�rYrM�r_sym�r_ssym�r_type3�r_type2�r_typecSs|dS)Nr[r$rVr$r$r%rX�rYZr_info_ssymcSs|dS)Nr\r$rVr$r$r%rX�rYcSs|dS)Nr_r$rVr$r$r%rX�rYZr_info_type2cSs|dS)Nr^r$rVr$r$r%rX�rYZr_info_type3cSs|dS)Nr]r$rVr$r$r%rX�rYcSs8|dd>|dd>B|dd>B|dd>B|d	BS)
Nr[rr\�r]�r^rUr_r$rVr$r$r%rX�s

�
�
��cSs|dd?d@S)NrTr���r$rVr$r$r%rXrYcSs|dd@S)NrTrbr$rVr$r$r%rXrY�Elf_RelZr_offsetZr_addend�Elf_Rela)rr2rr!r/r-rr0rcr3rd)r#rSZfields_and_addendr$r$r%r;�sV
���
�������
��zELFStructs._create_relcCsntt�}|jtvr$|�t|j�n|jdkr8|�t�tdt|�	d�fi|��|�
d�tddd���|_dS)NZELFOSABI_SOLARIS�Elf_DynZd_tag�d_valZd_ptrcSs|dS)Nrfr$rVr$r$r%rXrYz(ELFStructs._create_dyn.<locals>.<lambda>)
�dictZENUM_D_TAG_COMMONr!ZENUMMAP_EXTRA_D_TAG_MACHINE�updater"ZENUM_D_TAG_SOLARISrrr3r2rre)r#Z
d_tag_dictr$r$r%r<s


�zELFStructs._create_dyncCs�tdttdd�fit��ttdd�fit���}tdtd�ttdd�fit���}|jd	kr�td
|�	d�|�
d�|�	d
�||t|�d�fit���|_
n:td
|�	d�||t|�d�fit��|�
d�|�d
��|_
dS)NZst_infoZbindrH�typeZst_other�Z
visibility�r�Elf_SymZst_nameZst_value�st_sizeZst_shndx)rrrZENUM_ST_INFO_BINDZENUM_ST_INFO_TYPErZENUM_ST_VISIBILITYrrr/r0r.Z
ENUM_ST_SHNDXrlr2)r#Zst_info_structZst_other_structr$r$r%r:s2��
�	�zELFStructs._create_symcCs*tdt|�d�fit��|�d��|_dS)N�Elf_Sunw_SyminfoZ
si_boundtoZsi_flags)rrr.ZENUM_SUNW_SYMINFO_BOUNDTOrnr'r$r$r%r=9s�zELFStructs._create_sunw_syminfoc	Cshtd|�d�|�d�|�d�|�d�|�d��|_td|�d�|�d	�|�d
�|�d�|�d��|_dS)
N�Elf_VerneedZ
vn_versionZvn_cntZvn_fileZvn_auxZvn_next�Elf_VernauxZvna_hashZ	vna_flagsZ	vna_otherZvna_nameZvna_next)rr.r/rorpr'r$r$r%r>?s��zELFStructs._create_gnu_verneedcCs`td|�d�|�d�|�d�|�d�|�d�|�d�|�d��|_td	|�d
�|�d��|_dS)N�
Elf_VerdefZ
vd_versionZvd_flagsZvd_ndxZvd_cntZvd_hashZvd_auxZvd_next�Elf_VerdauxZvda_nameZvda_next)rr.r/rqrrr'r$r$r%r?Qs�	�zELFStructs._create_gnu_verdefcCs"tdt|�d�fit���|_dS)N�
Elf_VersymZndx)rrr.ZENUM_VERSYMrsr'r$r$r%r@bs�zELFStructs._create_gnu_versymcCs:tdt|�d�fit��|�d�|�d�|�d��|_dS)N�Elf_abiZabi_osZ	abi_majorZ	abi_minorZabi_tiny)rrr/ZENUM_NOTE_ABI_TAG_OSrtr'r$r$r%rAis�zELFStructs._create_gnu_abicCs�td|�d�|�d�t|�d�fi|dkr.tnt���|_|jdkr�td|�d�td	d
�|�d�|�d�|�	d
�|�
d�|�
d�|�
d�|�
d�|�
d�|�
d�tdd�tdd��|_nxtd|�d�td	d
�|�d�|�d�td�|�	d
�|�d�|�d�|�d�|�d�|�d�|�d�tdd�tdd��|_td|�	d�|�	d�t
dd�td|�d�|�d �|�d!���t
d"d�td#���|_dS)$N�Elf_NhdrZn_nameszZn_descsz�n_typeZET_COREr�Elf_PrpsinfoZpr_stateZpr_snamerZpr_zombZpr_niceZpr_flagZpr_uidZpr_gidZpr_pidZpr_ppidZpr_pgrpZpr_sidZpr_fnameraZ	pr_psargs�PrH�Elf_Nt_File�num_map_entriesZ	page_sizecSs|jSr�rzrVr$r$r%rX�rYz)ELFStructs._create_note.<locals>.<lambda>ZElf_Nt_File_EntryZvm_startZvm_endZpage_offsetcSs|jSrr{rVr$r$r%rX�rY�filename)rr/rZENUM_NOTE_N_TYPEZENUM_CORE_NOTE_N_TYPErurr-rr2r.rwrrr0r1rry)r#r r$r$r%rBssl��

������zELFStructs._create_notec	Cs6td|�d�|�d�|�d�|�d�|�d��|_dS)N�	Elf_StabsZn_strxrvZn_otherZn_descZn_value)rr/r-r.r}r'r$r$r%rC�s�zELFStructs._create_stabscCs@td|�d�|jddd��|_tdt|�d�fit���|_dS)NZElf_Attr_Subsection�lengthZvendor_namezutf-8)�encoding�Elf_Attribute_Tag�tag)rr/rKZElf_Attr_Subsection_HeaderrrJZENUM_ATTR_TAG_ARMr�r'r$r$r%rD�s����z!ELFStructs._create_arm_attributesc
CsBtd|�d�|�d�tdd�|�d��tdd�|�d���|_dS)	N�Elf_Hash�nbuckets�nchainscSs|dS�Nr�r$rVr$r$r%rX�rYz-ELFStructs._create_elf_hash.<locals>.<lambda>�bucketscSs|dS)Nr�r$rVr$r$r%rX�rYZchains)rr/rr�r'r$r$r%rE�s�zELFStructs._create_elf_hashcCsRtd|�d�|�d�|�d�|�d�tdd�|�d��td	d�|�d
���|_dS)N�Gnu_Hashr�Z	symoffset�
bloom_sizeZbloom_shiftcSs|dS)Nr�r$rVr$r$r%rX�rYz-ELFStructs._create_gnu_hash.<locals>.<lambda>ZbloomcSs|dSr�r$rVr$r$r%rX�rYr�)rr/rr2r�r'r$r$r%rF�s�zELFStructs._create_gnu_hash)Tr)NNN)N)�__name__�
__module__�__qualname__�__doc__r&r(r,r)r*r4r5r6r7r8r9r;r<r:r=r>r?r@rArBrCrDrErFr$r$r$r%rs2

 5


=
rN)Z	constructrrrrrrrr	r
rrr
rrrrrrrrrZcommon.construct_utilsrZenums�objectrr$r$r$r%�<module>
s\