Ë
    Öùd…
  ã                   óV   — d dl Z ddlmZmZmZmZmZ ddlmZ ddl	m
Z
mZ d„ Zd„ Zd„ Zy)	é    Né   )ÚUBInt32ÚUBInt64ÚULInt32ÚULInt64ÚArray)Ú
DWARFError)Úpreserve_stream_posÚstruct_parsec                 ó¤   — | j                  «       }||j                  vrt        d| j                  |fz  «      ‚|j                  |   j                  S )z¹Retrieves a required, base offset-type atribute
    from the top DIE in the CU. Applies to several indirectly
    encoded objects - range lists, location lists, strings, addresses.
    zThe CU at offset 0x%x needs %s)Úget_top_DIEÚ
attributesr	   Ú	cu_offsetÚvalue)ÚcuÚbase_attribute_nameÚ
cu_top_dies      ú;/usr/lib/python3/dist-packages/elftools/dwarf/dwarf_util.pyÚ_get_base_offsetr      sQ   € ð
 —‘Ó!€JØ *×"7Ñ"7Ñ7ÜÐ9¸R¿\¹\ÐK^Ð<_Ñ_Ó`Ð`Ø× Ñ Ð!4Ñ5×;Ñ;Ð;ó    c           	      óô   — t        ||«      }|j                  j                  dk(  rdnd}t        | «      5  |t	        |j                  j                  d«      | |||z  z   «      z   cddd«       S # 1 sw Y   yxY w)a‰  Given an index in the offset table and directions where to find it,
    retrieves an offset. Works for loclists, rnglists.

    The DWARF offset bitness of the CU block in the section matches that
    of the CU record in dwarf_info. See DWARFv5 standard, section 7.4.

    This is used for translating DW_FORM_loclistx, DW_FORM_rnglistx
    via the offset table in the respective section.
    é    é   é   Ú N)r   ÚstructsÚdwarf_formatr
   r   ÚDwarf_offset)Ústreamr   Úindexr   Úbase_offsetÚoffset_sizes         r   Ú_resolve_via_offset_tabler#      sx   € ô # 2Ð':Ó;€Kð —z‘z×.Ñ.°"Ò4‘!¸!€KÜ	˜VÓ	$ñ pØœ\¨"¯*©*×*AÑ*AÀ"Ó*EÀvÈ{Ð]bÐcnÑ]nÑOnÓoÑo÷p÷ pò pús   µ/A.Á.A7c              #   óà  K  — | j                  dt        j                  «       | j                  «       }| j                  dt        j                  «       d}||k  r“t        || |«      }|j                  dkD  rN|j                  r|j                  n|j                  }t        t        |j                   |d«      «      | «      |d<   nd|d<   |–— |j                  |j                  z   }||k  rŒ’yy­w)z®Iterates through the list of CU sections in loclists or rangelists. Almost identical structures there.

    get_parser is a lambda that takes structs, returns the parser
    r   r   ÚoffsetsFN)ÚseekÚosÚSEEK_ENDÚtellÚSEEK_SETr   Úoffset_countÚis64ÚDwarf_uint64ÚDwarf_uint32r   Úoffset_after_lengthÚunit_length)r   r   ÚparserÚendposÚoffsetÚheaderÚoffset_parsers          r   Ú_iter_CUs_in_sectionr6   +   sË   è ø€ ð
 ‡KK”2—;‘;ÔØ[‰[‹]€FØ
‡KK”2—;‘;Ôà€FØ
6Š/Ü˜f f¨fÓ5ˆØ×Ñ Ò"Ø4:·K²K˜G×0Ò0ÀW×EYÑEYˆMÜ ,¬U°6×3FÑ3FÉÐVXÓHYÓ-ZÐ\bÓ cˆF9Òà %ˆF9ÑØŠØ×+Ñ+¨f×.@Ñ.@Ñ@ˆð 6/ùs   ‚C)C.Ã,C.)r'   Úconstruct.macrosr   r   r   r   r   Úcommon.exceptionsr	   Úcommon.utilsr
   r   r   r#   r6   © r   r   ú<module>r;      s'   ðó 
ß HÕ HÝ *ß <ò<òpó$Ar   