[ Root System Explorer ]
Location:
Root
/
lib
/
python3.9
/
site-packages
/
elftools
/
elf
/
__pycache__
+ Folder
+ File
Upload
Editing: segments.cpython-39.pyc
a �#�_[ � @ sd d dl mZ d dlmZ ddlmZ ddlmZ G dd� de�Z G dd � d e �Z G d d� de �ZdS ) � )�CString)�struct_parse� )�SH_FLAGS)� iter_notesc @ s, e Zd Zdd� Zdd� Zdd� Zdd� Zd S ) �Segmentc C s || _ || _d S �N)�header�stream��selfr r � r �9/usr/lib/python3.9/site-packages/elftools/elf/segments.py�__init__ s zSegment.__init__c C s | j �| d � | j �| d �S )z) The segment data from the file. �p_offset�p_filesz)r �seek�read�r r r r �data s zSegment.datac C s | j | S )z6 Implement dict-like access to header entries )r )r �namer r r �__getitem__ s zSegment.__getitem__c C s | d }|d }|d }|t j@ r,|dv r,n|t j@ dkrD|dvrDndS |t j@ dkrb|dv rbdS |t j@ r�|d }| d }||kr�|| |d | d kr�|| | d d ks�dS |dkr�dS |d }| d }||k�o|| |d | d k�o|| | d d kS )z� Is the given section contained in this segment? Note: this tries to reproduce the intricate rules of the ELF_SECTION_IN_SEGMENT_STRICT macro of the header elf/include/internal.h in the source of binutils. Zp_typeZsh_typeZsh_flags)�PT_TLS�PT_GNU_RELRO�PT_LOAD� )r ZPT_PHDRF)r Z PT_DYNAMICZPT_GNU_EH_FRAMEr ZPT_GNU_STACKZsh_addrZp_vaddrZsh_sizeZp_memszr Z SHT_NOBITSTZ sh_offsetr r )r ZSHF_TLSZ SHF_ALLOC) r �sectionZsegtypeZsectypeZsecflagsZsecaddrZvaddrZ secoffsetZpoffsetr r r �section_in_segment sD ��� �� ��zSegment.section_in_segmentN)�__name__� __module__�__qualname__r r r r r r r r r s r c s( e Zd ZdZ� fdd�Zdd� Z� ZS )� InterpSegmentze INTERP segment. Knows how to obtain the path to the interpreter used for this ELF file. c s t t| ��||� d S r )�superr! r r �� __class__r r r _ s zInterpSegment.__init__c C s | d }t tddd�| j|d�S )z= Obtain the interpreter path used for this ELF file. r � zutf-8)�encoding)Z stream_pos)r r r )r Zpath_offsetr r r �get_interp_nameb s �zInterpSegment.get_interp_name)r r r �__doc__r r'