File: //lib/python3.9/site-packages/elftools/dwarf/__pycache__/lineprogram.cpython-39.pyc
a
�#�_/ � @ s^ d dl Z d dlZd dlmZ ddlmZ ddlT edd�ZG d d
� d
e�Z G dd� de�Z
dS )
� N)�
namedtuple� )�struct_parse� )�*�LineProgramEntryzcommand is_extended args statec @ s e Zd ZdZdd� Zdd� ZdS )� LineStatez� Represents a line program state (or a "row" in the matrix
describing debug location information for addresses).
The instance variables of this class are the "state machine registers"
described in section 6.2.2 of DWARFv3
c C sL d| _ d| _d| _d| _d| _|| _d| _d| _d| _d| _ d| _
d| _d S )Nr r F)�address�file�line�column�op_index�is_stmt�basic_block�end_sequence�prologue_end�epilogue_begin�isa�
discriminator)�self�default_is_stmt� r �>/usr/lib/python3.9/site-packages/elftools/dwarf/lineprogram.py�__init__1 s zLineState.__init__c C sN dt | � g}|�d| j � dD ]}|�d|t| |�f � q"d�|�d S )Nz<LineState %x:z address = 0x%x)
r
r r r r r r r r r z %s = %s�
z>
)�id�appendr �getattr�join)r �a�attrr r r �__repr__? s
zLineState.__repr__N)�__name__�
__module__�__qualname__�__doc__r r! r r r r r + s r c @ s0 e Zd ZdZdd� Zdd� Zdd� Zdd � Zd
S )�LineProgramz� Builds a "line table", which is essentially the matrix described
in section 6.2 of DWARFv3. It's a list of LineState objects,
sorted by increasing address, so it can be used to obtain the
state information for each address.
c C s( || _ || _|| _|| _|| _d| _dS )a�
header:
The header of this line program. Note: LineProgram may modify
its header by appending file entries if DW_LNE_define_file
instructions are encountered.
stream:
The stream this program can be read from.
structs:
A DWARFStructs instance suitable for this line program
program_{start|end}_offset:
Offset in the debug_line section stream where this program
starts (the actual program, after the header), and where it
ends.
The actual range includes start but not end: [start, end - 1]
N)�stream�header�structs�program_start_offset�program_end_offset�_decoded_entries)r r( r'