
    d;u                        d dl mZmZmZmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZ d dlmZmZmZmZmZ ddlmZ d Zd Zd Zd Zd\d
Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+d Z,d Z-d Z.d Z/d Z0d Z1d  Z2d! Z3d" Z4d# Z5d$ Z6d% Z7d&Z8 e9d'd(d)*      Z: e9d'd+d,-      Z; e9di d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYZ< e9dZd[d\d]d^d_`      Z= e9di dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~ddddddddddddZ> e9di ddddddddddddddddddddddddddddddddddddZ?ej                  dej                  dej                  diZC e9di ddddddddddddddddddddddddēddƓddȓddʓdd̓ddΓddГddғddԓdd֓ddؓddړddܓddޓdddddddddddddddddddddddddddddddddd ddddddddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.ZDej                  dej                  d/ej                  d0ej                  d1ej                  d2ej                  d3ej                  d4ej                  d5ej                  d6ej                  d7ej                  d8ej                  diZQi ej                  d9ej                  d:ej                  d;ej                  d<ej                  d=ej                  d>ej                  d?ej                  d@ej                  dAej                  dBej                  dCej                  dDej                  dEej                  dFej                  dGej                  dHZb e9dIdJdKdLdMdNddOdPdQR
      Zc e9dSdTdUV      Zd e9dWdXdYdZd[d\d]^      Ze e9d_d`dab      Zfej                  dcej                  ddej                  deej                  d4ej                  dfej                  d/ej                  dgej                  d3ej                  d2ej                  dhi
Zq e9didjdkdlm      Zrdndkej                  doej                  dUej                  dpiZv e9dqdrdsdtduv      Zw e9dwdxdydzd{d|}      Zxd~ZydZzdZ{dZ|dZ}dZ~dZd]dZ ee      Z ee      Z ee      Z ee      Z ee	      Z ee
      Z ee      ZdZ eee      Z e9di dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddÐdēdŐdƓdǐdȓdɐdʓdːd̓d͐dΓdϐdГdѐdғdӐdԓdՐd֓dאdؓdِdړdېdܓdݐdޓZg d	d	d	d	d	i dndߓd dddddddddddddddddddddddddddddddddidbd dddddddddd	dd
dddddddddd	dddddddddddbddddd d!d"d#dd$dd%d
d&d'd(dbd
d&d'dbddbd)d*ddbd+d,d-d.dd%d/dd%d/d0dd%d/dd%d/dd%d1d2d3d
dbd4d5d-d
dbd6d4d-d
d%d7d8d9d
d:d;d<d=d
d>d?d@dAd
d>dBd@ddbdCdDdEdFdGdHdIdbdCdDdEdFdJdKdIdddd	dbddd	dLdMdd	dbd3dNdd	d	d	dLdMdd	dOdPdQdd	d	d	d	d	d	d	d	d	d	d	d	d	d	d	d	d	d	d	d	d	dLdMdd	dLdRdSdTd
d	dLdMdZ e9ddddUdVdWX      Zd	d	d	dYdZd[d	dLdMdgZy	(^     )
ENUM_D_TAGENUM_E_VERSIONENUM_P_TYPE_BASEENUM_SH_TYPE_BASEENUM_RELOC_TYPE_i386ENUM_RELOC_TYPE_x64ENUM_RELOC_TYPE_ARMENUM_RELOC_TYPE_AARCH64ENUM_RELOC_TYPE_PPC64ENUM_RELOC_TYPE_MIPSENUM_ATTR_TAG_ARMENUM_ATTR_TAG_RISCVENUM_RELOC_TYPE_LOONGARCHENUM_DT_FLAGSENUM_DT_FLAGS_1)P_FLAGSRH_FLAGSSH_FLAGSSUNW_SYMINFO_FLAGS	VER_FLAGS   )	bytes2hexc                 6    t         j                  | t              S N)_DESCR_EI_CLASSget_unknownxs    ;/usr/lib/python3/dist-packages/elftools/elf/descriptions.pydescribe_ei_classr!          q(++    c                 6    t         j                  | t              S r   )_DESCR_EI_DATAr   r   r   s    r    describe_ei_datar&      s    a**r#   c                 2    dt         |    z  }| dk(  r|dz  }|S )Nz%d
EV_CURRENTz
 (current)r   )r   ss     r    describe_ei_versionr+      s(    ~a  AL	\Hr#   c                 6    t         j                  | t              S r   )_DESCR_EI_OSABIr   r   r   s    r    describe_ei_osabir.   #   r"   r#   Nc                     |N| dk(  rI|j                  d      }|j                  d      D ]$  }|j                  j                  t        d   z  s$ y t
        j                  | t              S )NET_DYNz.dynamic
DT_FLAGS_1DF_1_PIEz*DYN (Position-Independent Executable file))get_section_by_name	iter_tagsentryd_valr   _DESCR_E_TYPEr   r   )r   elffiledynamicts       r    describe_e_typer;   '   sg    qH}--j9""<0 	DAww}}z::C	D Q))r#   c                 6    t         j                  | t              S r   )_DESCR_E_MACHINEr   r   r   s    r    describe_e_machiner>   1   s    8,,r#   c                     dt         |    z  S )Nz0x%xr)   r   s    r    describe_e_version_numericr@   5   s    N1%%%r#   c                     | t         v rt         j                  |       S | t        d   k\  r| t        d   k  rd| t        d   z
  z  S t        S )NPT_LOOSPT_HIOSzLOOS+%lx)_DESCR_P_TYPEr   r   r   r   s    r    describe_p_typerE   9   sQ    M  ##	
y)	)a3CI3N.NQ!1)!<<==r#   c                     d}t         j                  t         j                  t         j                  fD ]  }|| |z  r	t        |   ndz  } |S )N  )r   PF_RPF_WPF_X_DESCR_P_FLAGSr   r*   flags      r    describe_p_flagsrO   B   sE    
Aw||W\\: 9	a$h^D!S89Hr#   c                     dj                   fdt        j                  t        j                  t        j                  t        j
                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                   t        j"                  fD              S )NrH   c              3   :   K   | ]  }|z  rt         |     y wr   )_DESCR_RH_FLAGS.0rN   r   s     r    	<genexpr>z$describe_rh_flags.<locals>.<genexpr>J   s'       t8 	   )joinr   RHF_NONERHF_QUICKSTART
RHF_NOTPOTRHF_NO_LIBRARY_REPLACEMENTRHF_NO_MOVERHF_SGI_ONLYRHF_GUARANTEE_INITRHF_DELTA_C_PLUS_PLUSRHF_GUARANTEE_START_INIT	RHF_PIXIERHF_DEFAULT_DELAY_LOADRHF_REQUICKSTARTRHF_REQUICKSTARTEDRHF_CORDRHF_NO_UNRES_UNDEFRHF_RLD_ORDER_SAFEr   s   `r    describe_rh_flagsrh   I   s    88 &&(?(?(((*M*M))8+@+@0033668J8J44..0K0K&&(C(C00	2  r#   c                     | t         v rt         j                  |       S | t        d   k\  r| t        d   k  rd| t        d   z
  z  S t        S )NSHT_LOOSSHT_GNU_versymz
loos+0x%lx)_DESCR_SH_TYPEr   r   r   r   s    r    describe_sh_typerm   Y   sS    N!!!$$
 ,
,
 01
1q#4Z#@@AAr#   c                    d}t         j                  t         j                  t         j                  t         j                  t         j
                  t         j                  t         j                  t         j                  t         j                  t         j                  t         j                  t         j                  fD ]  }|| |z  r	t        |   ndz  } | t         j                  z  s| t         j                  z  r|dz  }|S )NrG   p)r   	SHF_WRITE	SHF_ALLOCSHF_EXECINSTR	SHF_MERGESHF_STRINGSSHF_INFO_LINKSHF_LINK_ORDERSHF_OS_NONCONFORMING	SHF_GROUPSHF_TLS
SHF_MASKOSSHF_EXCLUDE_DESCR_SH_FLAGSSHF_MASKPROCrM   s      r    describe_sh_flagsr~   c   s    
A 2 2H4J4J 4 4h6L6L##X%B%B 0 0(2E2E  " 9 	
q4x_T"b89 x###x$$$HAHr#   c                 6    t         j                  | t              S r   )_DESCR_ST_INFO_TYPEr   r   r   s    r    describe_symbol_typer   r       ""1h//r#   c                 6    t         j                  | t              S r   )_DESCR_ST_INFO_BINDr   r   r   s    r    describe_symbol_bindr   v   r   r#   c                 6    t         j                  | t              S r   )_DESCR_ST_VISIBILITYr   r   r   s    r    describe_symbol_visibilityr   z   s    ##Ax00r#   c                 *    dt        d| z        z   dz   S )Nz[<localentry>: r   ])strr   s    r    describe_symbol_localr   ~   s    s16{*S00r#   c                 j    t        | d         }| d   dkD  r| d   dk  r|dz   t        | d         z   S |S )N
visibilitylocalr      rH   )r   r   )r   viss     r    describe_symbol_otherr      sC    
$Q|_
5CzA~!G*q.Sy07<<<Jr#   c                 4    t         j                  | d| z        S Nz%3s)_DESCR_ST_SHNDXr   r   s    r    describe_symbol_shndxr      s    q%!),,r#   c                    |j                         }|dk(  rt        j                  | t              S |dk(  rt        j                  | t              S |dk(  rt
        j                  | t              S |dk(  rt        j                  | t              S |dk(  rt        j                  | t              S |dk(  rt        j                  | t              S |dk(  rt        j                  | t              S d| d	z  z  S )
Nx86x64ARMAArch64z64-bit PowerPCMIPS	LoongArchzunrecognized: %-7x    )
get_machine_arch_DESCR_RELOC_TYPE_i386r   r   _DESCR_RELOC_TYPE_x64_DESCR_RELOC_TYPE_ARM_DESCR_RELOC_TYPE_AARCH64_DESCR_RELOC_TYPE_PPC64_DESCR_RELOC_TYPE_MIPS_DESCR_RELOC_TYPE_LOONGARCH)r   r8   archs      r    describe_reloc_typer      s    ##%Du}%))!X66	$((H55	$((H55		(,,Q99	!	!&**1h77	%))!X66		*..q(;;#q:~66r#   c                 6    t         j                  | t              S r   )_DESCR_D_TAGr   r   r   s    r    describe_dyn_tagr      s    Ax((r#   c                 t     dj                   fdt        t        j                         d       D              S )NrH   c              3   8   K   | ]  \  }}|z  r|d d   yw)   N rT   keyvalr   s      r    rU   z$describe_dt_flags.<locals>.<genexpr>   s+      FS=>W G F   c                     | d   S Nr   r   r:   s    r    <lambda>z#describe_dt_flags.<locals>.<lambda>   s
    AaD r#   r   )rW   sortedr   itemsr   s   `r    describe_dt_flagsr      s5    88 F}""$.9F F Fr#   c                 t     dj                   fdt        t        j                         d       D              S )NrH   c              3   8   K   | ]  \  }}|z  r|d d   yw)   Nr   r   s      r    rU   z&describe_dt_flags_1.<locals>.<genexpr>   s+      HS?@3w G Hr   c                     | d   S r   r   r   s    r    r   z%describe_dt_flags_1.<locals>.<lambda>   s
    ad r#   r   )rW   r   r   r   r   s   `r    describe_dt_flags_1r      s5    88 H$$&N;H H Hr#   c                 d    dj                   fdt        j                  t        j                  t        j                  t        j
                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  f
D              S )NrG   c              3   :   K   | ]  }|z  rt         |     y wr   )_DESCR_SYMINFO_FLAGSrS   s     r    rU   z)describe_syminfo_flags.<locals>.<genexpr>   s&      
>$ 56H (- 
>rV   )rW   r   SYMINFO_FLG_CAPSYMINFO_FLG_DIRECTSYMINFO_FLG_FILTERSYMINFO_FLG_AUXILIARYSYMINFO_FLG_DIRECTBINDSYMINFO_FLG_COPYSYMINFO_FLG_LAZYLOADSYMINFO_FLG_NOEXTDIRECTSYMINFO_FLG_INTERPOSESYMINFO_FLG_DEFERREDr   s   `r    describe_syminfo_flagsr      s}    77 
>**----0011++//2200//
;1 
> 
> 
>r#   c                 4    t         j                  | d| z        S r   )_DESCR_SYMINFO_BOUNDTOr   r   s    r    describe_symbol_boundtor      s    !%%a33r#   c                      dj                   fdt        j                  t        j                  t        j                  fD              S )Nz | c              3   :   K   | ]  }|z  rt         |     y wr   )_DESCR_VER_FLAGSrS   s     r    rU   z%describe_ver_flags.<locals>.<genexpr>   s&      - $%t8 't, -rV   )rW   r   VER_FLG_WEAKVER_FLG_BASEVER_FLG_INFOr   s   `r    describe_ver_flagsr      s>    :: -:  - - -r#   c                 2   | d   }d}| d   dk(  rH| d   dk(  rdt        | d         z  }n~d	t        j                  |d
   t              |d   |d   |d   fz  }nP| d   dk(  rd|z  }nB| d   dk(  rd|z  }n4| d   dk(  rdt	        | d         z   }ndj                  t        |            }| d   dk(  r| d   dk(  rd}d}nRt        | d   t              r| d   nd}t        | d   t              rd| d   z  nt        j                  | d   t              }|d|d|S )Nn_descrG   n_typeNT_GNU_ABI_TAGn_nameAndroidz
   description data: %s 
n_descdataz
    OS: %s, ABI: %d.%d.%dabi_os	abi_major	abi_minorabi_tinyNT_GNU_BUILD_IDz
    Build ID: %sNT_GNU_GOLD_VERSIONz
    Version: %sNT_GNU_PROPERTY_TYPE_0z
      Properties: z
      description data: {}
NT_VERSIONversionzUnknown note type:z0x%.8xz ())
r   _DESCR_NOTE_ABI_TAG_OSr   r   describe_note_gnu_propertiesformat
isinstancer   int_DESCR_NOTE_N_TYPE)r   r   desc	note_typenote_type_descs        r    describe_noter      sb   x[FD{&&X;)#/)AlO2LLD0&**6(+;XF{#VK%8&:L4N ND 
8)	)#v.	
8-	-"f-	
80	0%(DQx[(QQ-44Yv5FG{&&1X;)+C 	"$.q{C$@Qx[- 	 &ak37 #Qx[0*..q{HE 	 $^T::r#   c                 J   t         |    dz
  }t        |   }|~| dk(  rt        |    d||fz  z   S | dk(  r7|j                  dk(  rt        |    ||   z   S t        |    d|j                  z  z   S | dk(  rt        |    dz   S t        |    }||r	d	|z  z  }|S d
z  }|S t        |    ||   z   S )Nr   TAG_COMPATIBILITYzflag = %d, vendor = %sTAG_ALSO_COMPATIBLE_WITHTAG_CPU_ARCHz??? (%d)TAG_NODEFAULTSTrue"%s"rG   )r   _DESCR_ATTR_VAL_ARM_DESCR_ATTR_TAG_ARMtagr   r   extraidxd_entryr*   s         r    describe_attr_tag_armr     s    
C
 1
$C!#&G%%',.#u=> ? ..ww.(*3/'#,>> +3/*sww2FFF$$&s+f44$	SVc\( ')( #3''#,66r#   c                     t         |    dz
  }t        |   }|t        |    }||r	d|z  z  }|S dz  }|S t        |    ||   z   S )Nr   r   rG   )r   _DESCR_ATTR_VAL_RISCV_DESCR_ATTR_TAG_RISCVr   s         r    describe_attr_tag_riscvr    sd    
c
"Q
&C#C(G!#&	SVc\( ')( %S)GCL88r#   c                 x    g }t         D ]  \  }}| |z  s|j                  |        ddj                  |      z   S )Nzx86 feature: , ),_DESCR_NOTE_GNU_PROPERTY_X86_FEATURE_1_FLAGSappendrW   valuedescsmaskr   s       r    (describe_note_gnu_property_x86_feature_1r    sC    EB 
d4<LL TYYu---r#   c                 x    g }t         D ]  \  }}| |z  s|j                  |        ddj                  |      z   S )Nzx86 feature used: r  ),_DESCR_NOTE_GNU_PROPERTY_X86_FEATURE_2_FLAGSr
  rW   r  s       r    -describe_note_gnu_property_x86_feature_2_usedr    sC    EB 
d4<LL  $))E"222r#   c                 ~    g }t         D ]  \  }}| |z  s|j                  |        d|ddj                  |      S )Nzx86 ISA z: r  )(_DESCR_NOTE_GNU_PROPERTY_X86_ISA_1_FLAGSr
  rW   )r  verbr  r  r   s        r    $describe_note_gnu_property_x86_isa_1r    sC    E> 
d4<LL  $TYYu%566r#   c                    g }| D ]C  }|j                   |j                  |j                  }}}|dk(  rt        |      t        u rd|z  }nd|z  }n|dk(  r|dk7  rd|z  }nd}n|dk(  r|d	k7  rd|z  }nt        |      }n|d
k(  r|d	k7  rd|z  }nt        |      }n|dk(  r|d	k7  rd|z  }nt        |d      }n|dk(  r|d	k7  rd|z  }nqt        |d      }ndt        |cxk  r	t        k  rn nd|t        |d      fz  }n;t        |cxk  r	t        k  rn nd|t        |d      fz  }nd|t        |d      fz  }|j                  |       F dj                  |      S )NGNU_PROPERTY_STACK_SIZEzstack size: 0x%xz"stack size: <corrupt length: 0x%x>!GNU_PROPERTY_NO_COPY_ON_PROTECTED    z <corrupt length: 0x%x>zno copy on protectedGNU_PROPERTY_X86_FEATURE_1_AND   GNU_PROPERTY_X86_FEATURE_2_USEDGNU_PROPERTY_X86_ISA_1_NEEDEDneededGNU_PROPERTY_X86_ISA_1_USEDusedz(<processor-specific type 0x%x data: %s >rH   )sepz*<application-specific type 0x%x data: %s >z<unknown type 0x%x data: %s >z	
        )pr_typepr_data	pr_datasztyper   r  r  r  $_DESCR_NOTE_GNU_PROPERTY_TYPE_LOPROC$_DESCR_NOTE_GNU_PROPERTY_TYPE_HIPROCr   $_DESCR_NOTE_GNU_PROPERTY_TYPE_LOUSER$_DESCR_NOTE_GNU_PROPERTY_TYPE_HIUSERr
  rW   )
propertiesdescriptionspropr:   dsz	prop_descs          r    r   r   $  s   L &'<<t~~b1))Aw#~.2	@2E	55Qw5:	2	22Qw5:	DQG	33Qw5:	I!L	11Qw5:	@HM	//Qw5:	@FK	1Q^:^^BaSTZ]I^E__I1Q^:^^D9UV\_K`GaaI71is>S:TTII&M&'N \**r#   z	<unknown>noneELF32ELF64)ELFCLASSNONE
ELFCLASS32
ELFCLASS64z2's complement, little endianz2's complement, big endian)ELFDATANONEELFDATA2LSBELFDATA2MSBELFOSABI_SYSVzUNIX - System VELFOSABI_HPUXzUNIX - HP-UXELFOSABI_NETBSDzUNIX - NetBSDELFOSABI_LINUXzUNIX - LinuxELFOSABI_HURDzUNIX - GNU/HurdELFOSABI_SOLARISzUNIX - SolarisELFOSABI_AIXz
UNIX - AIXELFOSABI_IRIXzUNIX - IRIXELFOSABI_FREEBSDzUNIX - FreeBSDELFOSABI_TRU64zUNIX - TRU64ELFOSABI_MODESTOzNovell - ModestoELFOSABI_OPENBSDzUNIX - OpenBSDELFOSABI_OPENVMSzVMS - OpenVMSELFOSABI_NSKzHP - Non-Stop KernelELFOSABI_AROSAROSELFOSABI_FENIXOSzFenix OSELFOSABI_CLOUDzNuxi - CloudABIELFOSABI_SORTIXSortixELFOSABI_ARM_AEABIz
ARM - EABIELFOSABI_ARMz	ARM - ABIELFOSABI_CELL_LV2zCellOS Lv-2ELFOSABI_STANDALONEzStandalone AppzNONE (None)zREL (Relocatable file)zEXEC (Executable file)zDYN (Shared object file)zCORE (Core file)zProcessor Specific)ET_NONEET_RELET_EXECr0   ET_COREPROC_SPECIFICEM_NONENoneEM_M32WE32100EM_SPARCSparcEM_386zIntel 80386EM_68KMC68000EM_88KMC88000EM_860zIntel 80860EM_MIPSz
MIPS R3000EM_S370zIBM System/370EM_MIPS_RS4_BEzMIPS 4000 big-endianEM_IA_64zIntel IA-64	EM_X86_64zAdvanced Micro Devices X86-64EM_AVRzAtmel AVR 8-bit microcontrollerEM_ARMr   
EM_AARCH64r   EM_BLACKFINzAnalog Devices BlackfinEM_PPCPowerPCEM_PPC64	PowerPC64EM_RISCVzRISC-VEM_LOONGARCHr   RESERVEDPT_NULLNULLPT_LOADLOAD
PT_DYNAMICDYNAMIC	PT_INTERPINTERPPT_NOTENOTEPT_SHLIBSHLIBPT_PHDRPHDRPT_GNU_EH_FRAMEGNU_EH_FRAMEPT_GNU_STACK	GNU_STACKPT_GNU_RELRO	GNU_RELROPT_GNU_PROPERTYGNU_PROPERTYPT_ARM_ARCHEXTARM_ARCHEXTPT_ARM_EXIDXEXIDXPT_AARCH64_ARCHEXTAARCH64_ARCHEXTPT_AARCH64_UNWINDAARCH64_UNWINDPT_TLSTLSPT_MIPS_ABIFLAGSABIFLAGSPT_RISCV_ATTRIBUTESRISCV_ATTRIBUTERWSHT_NULLSHT_PROGBITSPROGBITS
SHT_SYMTABSYMTAB
SHT_STRTABSTRTABSHT_RELARELASHT_HASHHASHSHT_DYNAMICSHT_NOTE
SHT_NOBITSNOBITSSHT_RELREL	SHT_SHLIB
SHT_DYNSYMDYNSYMSHT_INIT_ARRAY
INIT_ARRAYSHT_FINI_ARRAY
FINI_ARRAYSHT_PREINIT_ARRAYPREINIT_ARRAYSHT_GNU_ATTRIBUTESGNU_ATTRIBUTESSHT_GNU_HASHGNU_HASH	SHT_GROUPGROUPSHT_SYMTAB_SHNDXzSYMTAB SECTION INDICIESSHT_RELRRELRSHT_GNU_verdefVERDEFSHT_GNU_verneedVERNEEDrk   VERSYMSHT_GNU_LIBLISTGNU_LIBLISTSHT_ARM_EXIDX	ARM_EXIDXSHT_ARM_PREEMPTMAPARM_PREEMPTMAPSHT_ARM_ATTRIBUTESARM_ATTRIBUTESSHT_ARM_DEBUGOVERLAYARM_DEBUGOVERLAYSHT_RISCV_ATTRIBUTESRISCV_ATTRIBUTESSHT_MIPS_LIBLISTMIPS_LIBLISTSHT_MIPS_DEBUG
MIPS_DEBUGSHT_MIPS_REGINFOMIPS_REGINFOSHT_MIPS_PACKAGEMIPS_PACKAGESHT_MIPS_PACKSYMMIPS_PACKSYMSHT_MIPS_RELD	MIPS_RELDSHT_MIPS_IFACE
MIPS_IFACESHT_MIPS_CONTENTMIPS_CONTENTSHT_MIPS_OPTIONSMIPS_OPTIONSSHT_MIPS_SHDR	MIPS_SHDRSHT_MIPS_FDESC
MIPS_FDESCSHT_MIPS_EXTSYMMIPS_EXTSYMSHT_MIPS_DENSE
MIPS_DENSESHT_MIPS_PDESC
MIPS_PDESCSHT_MIPS_LOCSYMMIPS_LOCSYMSHT_MIPS_AUXSYMMIPS_AUXSYMSHT_MIPS_OPTSYMMIPS_OPTSYMSHT_MIPS_LOCSTRMIPS_LOCSTRSHT_MIPS_LINE	MIPS_LINESHT_MIPS_RFDESCMIPS_RFDESCSHT_MIPS_DELTASYMMIPS_DELTASYMSHT_MIPS_DELTAINSTMIPS_DELTAINSTSHT_MIPS_DELTACLASSMIPS_DELTACLASSSHT_MIPS_DWARF
MIPS_DWARFSHT_MIPS_DELTADECLMIPS_DELTADECLSHT_MIPS_SYMBOL_LIBMIPS_SYMBOL_LIBSHT_MIPS_EVENTSMIPS_EVENTSSHT_MIPS_TRANSLATEMIPS_TRANSLATESHT_MIPS_PIXIE
MIPS_PIXIESHT_MIPS_XLATE
MIPS_XLATESHT_MIPS_XLATE_DEBUGMIPS_XLATE_DEBUGSHT_MIPS_WHIRL
MIPS_WHIRLSHT_MIPS_EH_REGIONMIPS_EH_REGIONSHT_MIPS_XLATE_OLDMIPS_XLATE_OLDSHT_MIPS_PDR_EXCEPTIONMIPS_PDR_EXCEPTIONSHT_MIPS_ABIFLAGSMIPS_ABIFLAGSAXMSILOGToNONE
QUICKSTARTNOTPOTNO_LIBRARY_REPLACEMENTNO_MOVESGI_ONLYGUARANTEE_INITDELTA_C_PLUS_PLUSGUARANTEE_START_INITPIXIEDEFAULT_DELAY_LOADREQUICKSTARTREQUICKSTARTEDCORDNO_UNRES_UNDEFRLD_ORDER_SAFENOTYPEOBJECTFUNCSECTIONFILECOMMONNUMRELCSRELC)

STT_NOTYPE
STT_OBJECTSTT_FUNCSTT_SECTIONSTT_FILE
STT_COMMONSTT_TLSSTT_NUMSTT_RELC	STT_SRELCLOCALGLOBALWEAK)	STB_LOCAL
STB_GLOBALSTB_WEAKDEFAULTINTERNALHIDDEN	PROTECTEDEXPORTED	SINGLETON	ELIMINATE)STV_DEFAULTSTV_INTERNAL
STV_HIDDENSTV_PROTECTEDSTV_EXPORTEDSTV_SINGLETONSTV_ELIMINATEUNDABSCOM)	SHN_UNDEFSHN_ABS
SHN_COMMONDBCNFPz<self>z<parent>rG   z<extern>)SYMINFO_BT_SELFSYMINFO_BT_PARENTSYMINFO_BT_NONESYMINFO_BT_EXTERNr  BASEINFOzABI version tagz DSO-supplied software HWCAP infozunique build ID bitstringzgold versionzprogram properties)r   NT_GNU_HWCAPr   r   r   LinuxGNUz	Solaris 2FreeBSDNetBSDSyllable)ELF_NOTE_OS_LINUXELF_NOTE_OS_GNUELF_NOTE_OS_SOLARIS2ELF_NOTE_OS_FREEBSDELF_NOTE_OS_NETBSDELF_NOTE_OS_SYLLABLEl        l   ? l      @ r   ))r   IBT)r   SHSTK)r  LAM_U48)   LAM_U57))r   r   )r   x87)r  MMX)rx  XMM)   YMM)    ZMM))r   zx86-64-baseliner   c                 V    i }| j                         D ]  \  }}||v r||v r|||<    |S )an  
    This is a tiny helper function to "reverse" the keys/values of a dictionary
    provided in the first argument, i.e. {k: v} becomes {v: k}.

    The second argument (optional) provides primitive control over what to do in
    the case of conflicting values - if a value is present in this list, it will
    not override any other entries of the same value.
    )r   )r.  low_priorityoutkvs        r    _reverse_dictr    sC     C	 18\)A Jr#   )DT_LOOSDT_HIOS	DT_LOPROC	DT_HIPROCDT_ENCODING)r  TAG_FILEzFile AttributesTAG_SECTIONzSection Attributes:
TAG_SYMBOLzSymbol Attributes:TAG_CPU_RAW_NAMEzTag_CPU_raw_name: TAG_CPU_NAMEzTag_CPU_name: r   zTag_CPU_arch: TAG_CPU_ARCH_PROFILEzTag_CPU_arch_profile: TAG_ARM_ISA_USEzTag_ARM_ISA_use: TAG_THUMB_ISA_USEzTag_Thumb_ISA_use: TAG_FP_ARCHzTag_FP_arch: TAG_WMMX_ARCHzTag_WMMX_arch: TAG_ADVANCED_SIMD_ARCHzTag_Advanced_SIMD_arch: TAG_PCS_CONFIGzTag_PCS_config: TAG_ABI_PCS_R9_USEzTag_ABI_PCS_R9_use: TAG_ABI_PCS_RW_DATAzTag_ABI_PCS_RW_use: TAG_ABI_PCS_RO_DATAzTag_ABI_PCS_RO_use: TAG_ABI_PCS_GOT_USEzTag_ABI_PCS_GOT_use: TAG_ABI_PCS_WCHAR_TzTag_ABI_PCS_wchar_t: TAG_ABI_FP_ROUNDINGzTag_ABI_FP_rounding: TAG_ABI_FP_DENORMALzTag_ABI_FP_denormal: TAG_ABI_FP_EXCEPTIONSzTag_ABI_FP_exceptions: TAG_ABI_FP_USER_EXCEPTIONSzTag_ABI_FP_user_exceptions: TAG_ABI_FP_NUMBER_MODELzTag_ABI_FP_number_model: TAG_ABI_ALIGN_NEEDEDzTag_ABI_align_needed: TAG_ABI_ALIGN_PRESERVEDzTag_ABI_align_preserved: TAG_ABI_ENUM_SIZEzTag_ABI_enum_size: TAG_ABI_HARDFP_USEzTag_ABI_HardFP_use: TAG_ABI_VFP_ARGSzTag_ABI_VFP_args: TAG_ABI_WMMX_ARGSzTag_ABI_WMMX_args: TAG_ABI_OPTIMIZATION_GOALSzTag_ABI_optimization_goals: TAG_ABI_FP_OPTIMIZATION_GOALSzTag_ABI_FP_optimization_goals: r   zTag_compatibility: TAG_CPU_UNALIGNED_ACCESSzTag_CPU_unaligned_access: TAG_FP_HP_EXTENSIONzTag_FP_HP_extension: TAG_ABI_FP_16BIT_FORMATzTag_ABI_FP_16bit_format: TAG_MPEXTENSION_USEzTag_MPextension_use: TAG_DIV_USEzTag_DIV_use: r   zTag_nodefaults: r   zTag_also_compatible_with: TAG_T2EE_USEzTag_T2EE_use: TAG_CONFORMANCEzTag_conformance: TAG_VIRTUALIZATION_USEzTag_Virtualization_use: TAG_MPEXTENSION_USE_OLDzTag_MPextension_use_old: zPre-v4v4v4Tr   v5Tr  v5TEr   v5TEJ   v6r   v6KZrx  v6T2	   v6K
   v7   zv6-M   zv6S-M   zv7E-M   v8   zv8-Rr}  zv8-M.baseline   zv8-M.mainlineApplicationRealtimeMicrocontrollerzApplication or Realtime)r  A   R   M   S   NoYes)r  r   zThumb-1zThumb-2)r  r   r   r   VFPv1zVFPv2 VFPv3z	VFPv3-D16VFPv4z	VFPv4-D16z	FP ARM v8zFPv5/FP-D16 for ARMv8)	r  r   r   r   r  r   r  r   rx  WMMXv1WMMXv2)r  r   r   NEONv1zNEONv1 with Fused-MACzNEON for ARMv8zNEON for ARMv8.1)r  r   r   r   r  zBare platformzLinux applicationz	Linux DSOzPalmOS 2004zPalmOS (reserved)zSymbianOS 2004zSymbianOS (reserved))r  r   r   r   r  r   r  r   SBUnusedAbsolutezPC-relativezSB-relativedirectzGOT-indirectz??? 12z??? 34Neededz	Sign onlyFiniteRTABIzIEEE 754z8-bytez4-bytez8-byte, except leaf SPsmallr   zforced to intzAs Tag_FP_archzSP onlyReserved
DeprecatedAAPCSzVFP registerscustom
compatiblezWMMX registerszPrefer SpeedzAggressive SpeedzPrefer SizezAggressive SizezPrefer DebugzAggressive Debug)r  r   r   r   r  r   r  zPrefer AccuracyzAggressive AccuracyzNot AllowedAllowedzAlternative Formatz"Allowed in Thumb-ISA, v7-R or v7-MzNot allowedz/Allowed in v7-A with integer division extension	TrustZonezVirtualization Extensionsz'TrustZone and Virtualization ExtensionszTag_RISCV_stack_align: zTag_RISCV_arch: zTag_RISCV_unaligned_access: )r  r  r  TAG_STACK_ALIGNTAG_ARCHTAG_UNALIGNEDz4-bytesz16-bytes)r  r}  r   )r   )enumsr   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   	constantsr   r   r   r   r   common.utilsr   r!   r&   r+   r.   r;   r>   r@   rE   rO   rh   rm   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r   r   dictr   r%   r-   r7   r=   rD   rK   rI   rJ   rL   rl   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rR   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r'  r(  r)  r*  r	  r  r  r  r   r   r   r   r   r   r   _low_priority_D_TAGr   r   r   r  r  r   r#   r    <module>r     s  ? ? ? ? ?@ @ $,+,*-& 0011-7()F
H
>4-;>74
9.37)+X   /,  #  $ "	
 $ &    & " ( & % (    !" %#$ %& $'( )* $+, )-4 #$%&    	
      *  . -    *!" #$ %& '( )* + 2    	
    #   # !  ) '  !"  #$ )%. LL#LL#LL#  BBB B 	B
 B B B B B B B B  B  B &B  (!B" #B$ %B& /'B( )B* +B, -B. /B0 "1B2 3B4 (5B6 (7B8 ,9B: ,;B< $=B>  ?B@ $ABB $CBD $EBF GBH  IBJ $KBL $MBN OBP  QBR "SBT  UBV  WBX "YBZ "[B\ "]B^ "_B` aBb "cBd &eBf (gBh *iBj  kBl (mBn *oBp "qBr (sBt  uBv  wBx ,yBz  {B| (}B~ (B@ 0ABB &CBL C#CS!!3c# v\  '')A	
 ) : !1 ""$7 %%'=  ##%9 ~ !1 v !1  !1!(        ))3--s''++S..,,c))3,,c&&++S    	  rFFF	  $3/&/  $!#  &0 $%/ $%/ $%/ $
0 ,0 ,, (  '';< %&9: %&9: )*AB '(=> &';< +,EF 	  Z6IJ ,,%, $, *	,
 ", ", 2, (, ,,  , $, 6, &, ., /,  /!," 0#,$ 0%,& 0',( 0),* 4+,,  >-,. 8/,0 21,2 83,4 ,5,6 .7,8 *9,: ,;,<  >=,> #D?,@ ,A,B :C,D 0E,F 8G,H 0I,J  K,L &M,N :O,P "Q,R (S,T 6U,V 8W, \{{{ 	{ 		{
 	{	H	D 	
E 	
E	
 	
F 	
G 	
D 	
F 	
F 	
E 	D 	F 	G 	G 	D  	F!" 	O#$ 	O%{6 '5{D C{L 	K{X "
W{n m{x "w{F !	E{Z 	Y{f 	e{r q{| {{F E{T S{\ [{f e{n m{v 	u{B 	A{N #	M{Z 	Y{f 	e{r 	q{~ }{H G{Z  Y{l k{r 	s{v u{| 	}{@ {F 	G{J I{R 	S{T 	U{V 	W{Z Y{` 	a{d 0<c{l 	m{n 	o{p 	q{r 	s{t 	u{v 	w{x 	y{z 	{{| 	}{~ 	{@ 	A{B 	C{D 	E{F 	G{H 	I{J 	K{L 	M{N 	O{P 	Q{R 	S{T 	U{X W{^ 	_{b &4	a{l 	m{p o{ z %#-0  	 	 r#   