+
    UBiKY                    .   ^ RI Ht ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt	^RI
HtHtHt ^t^t^t^t^t^tRtRs ! R R4      t ! R R	]4      t ! R
 R]4      t ! R R]4      t ! R R]4      tRR R lltR R ltR R ltR R ltRR R lltR# )    )annotationsN)
OrderedSetgenerate_list
Popen_safei5  pFc                  "    ] tR t^tR R ltRtR# )	DataSizesc               $    V ^8  d   QhRRRRRR/# )   ptrsizeintis_leboolreturnNone )formats   "@/usr/lib/python3.14/site-packages/mesonbuild/scripts/depfixer.py__annotate__DataSizes.__annotate__   s!       D T     c                	    V'       d   R pMRpVR,           V n         ^V n        VR,           V n        ^V n        VR,           V n        ^V n        VR,           V n        ^V n        VR,           V n        ^V n	        V^@8X  dW   VR,           V n
        ^V n        VR,           V n        ^V n        VR,           V n        ^V n        VR,           V n        ^V n        R# VR,           V n
        ^V n        VR,           V n        ^V n        R# )	<>chIiQqN)CharCharSizeHalfHalfSizeSectionSectionSizeWordWordSizeSword	SwordSizeAddrAddrSizeOffOffSizeXWord	XWordSizeSxword
SxwordSize)selfr   r   ps   &&& r   __init__DataSizes.__init__   s    AAG	G	3wG	W
b=CDIDM3wDHDLSDJDNc'DKDOCDIDM3wDHDLr   )r*   r+   r    r!   r"   r#   r,   r-   r$   r%   r(   r)   r0   r1   r&   r'   r.   r/   N)__name__
__module____qualname____firstlineno__r4   __static_attributes__r   r   r   r   r      s     r   r   c                  :   a  ] tR t^;tR V 3R lltR R ltRtV ;t# )DynamicEntryc               (    V ^8  d   QhRRRRRRRR/# 	r
   ifile
T.BinaryIOr   r   r   r   r   r   r   )r   s   "r   r   DynamicEntry.__annotate__<   s.     N Nj N3 Nt N Nr   c                	t  < \         SV `  W#4       W n        V^@8X  d   \        P                  ! V P
                  VP                  V P                  4      4      ^ ,          V n        \        P                  ! V P                  VP                  V P                  4      4      ^ ,          V n        R# \        P                  ! V P                  VP                  V P                  4      4      ^ ,          V n        \        P                  ! V P                  VP                  V P                  4      4      ^ ,          V n        R# @   N)superr4   r   structunpackr0   readr1   d_tagr.   r/   valr(   r)   r&   r'   )r2   r?   r   r   	__class__s   &&&&r   r4   DynamicEntry.__init__<   s    (b=t{{EJJt4OPQRSDJ}}TZZDNN1KLQODHtzz5::dnn3MNqQDJ}}TYY

4==0IJ1MDHr   c                    V ^8  d   QhRRRR/# )r
   ofiler@   r   r   r   )r   s   "r   r   rA   F   s     : :: :$ :r   c                	   V P                   ^@8X  dw   VP                  \        P                  ! V P                  V P
                  4      4       VP                  \        P                  ! V P                  V P                  4      4       R# VP                  \        P                  ! V P                  V P
                  4      4       VP                  \        P                  ! V P                  V P                  4      4       R# rC   )
r   writerF   packr0   rI   r.   rJ   r(   r&   )r2   rN   s   &&r   rP   DynamicEntry.writeF   s    <<2KKDKK<=KKDJJ9:KKDJJ

;<KKDIItxx89r   )rI   r   rJ   )r6   r7   r8   r9   r4   rP   r:   __classcell__rK   s   @r   r<   r<   ;   s    N N: :r   r<   c                  .   a  ] tR t^NtR V 3R lltRtV ;t# )DynsymEntryc               (    V ^8  d   QhRRRRRRRR/# r>   r   )r   s   "r   r   DynsymEntry.__annotate__O   s.     Y Yj Y3 Yt Y Yr   c                	J  < \         SV `  W#4       V^@8H  p\        P                  ! V P                  VP                  V P                  4      4      ^ ,          V n        V'       Eda   \        P                  ! V P                  VP                  V P                  4      4      ^ ,          V n
        \        P                  ! V P                  VP                  V P                  4      4      ^ ,          V n        \        P                  ! V P                  VP                  V P                  4      4      ^ ,          V n        \        P                  ! V P                  VP                  V P                   4      4      ^ ,          V n        \        P                  ! V P$                  VP                  V P&                  4      4      ^ ,          V n        R# \        P                  ! V P                  VP                  V P                   4      4      ^ ,          V n        \        P                  ! V P                  VP                  V P                  4      4      ^ ,          V n        \        P                  ! V P                  VP                  V P                  4      4      ^ ,          V n
        \        P                  ! V P                  VP                  V P                  4      4      ^ ,          V n        \        P                  ! V P                  VP                  V P                  4      4      ^ ,          V n        R# rC   )rE   r4   rF   rG   r&   rH   r'   st_namer    r!   st_infost_otherr$   r%   st_shndxr*   r+   st_valuer.   r/   st_sizer2   r?   r   r   is_64rK   s   &&&& r   r4   DynsymEntry.__init__O   s   (2}}TYY

4==0IJ1M5!==EJJt}}4MNqQDL"MM$))UZZ5NOPQRDM"MM$,,

4CSCS8TUVWXDM"MM$))UZZ5NOPQRDM!==UZZ5OPQRSDL"MM$))UZZ5NOPQRDM!==EJJt}}4MNqQDL!==EJJt}}4MNqQDL"MM$))UZZ5NOPQRDM"MM$,,

4CSCS8TUVWXDMr   )r[   rZ   r\   r]   r_   r^   r6   r7   r8   r9   r4   r:   rS   rT   s   @r   rV   rV   N   s    Y Yr   rV   c                  .   a  ] tR t^`tR V 3R lltRtV ;t# )SectionHeaderc               (    V ^8  d   QhRRRRRRRR/# r>   r   )r   s   "r   r   SectionHeader.__annotate__a   s.     #U #Uj #U3 #Ut #U #Ur   c                	"  < \         SV `  W#4       V^@8H  p\        P                  ! V P                  VP                  V P                  4      4      ^ ,          V n        \        P                  ! V P                  VP                  V P                  4      4      ^ ,          V n        V'       dH   \        P                  ! V P                  VP                  V P                  4      4      ^ ,          V n        MF\        P                  ! V P                  VP                  V P                  4      4      ^ ,          V n        \        P                  ! V P                  VP                  V P                  4      4      ^ ,          V n        \        P                  ! V P                  VP                  V P                   4      4      ^ ,          V n        V'       dH   \        P                  ! V P                  VP                  V P                  4      4      ^ ,          V n        MF\        P                  ! V P                  VP                  V P                  4      4      ^ ,          V n        \        P                  ! V P                  VP                  V P                  4      4      ^ ,          V n        \        P                  ! V P                  VP                  V P                  4      4      ^ ,          V n        V'       dH   \        P                  ! V P                  VP                  V P                  4      4      ^ ,          V n        MF\        P                  ! V P                  VP                  V P                  4      4      ^ ,          V n        V'       dI   \        P                  ! V P                  VP                  V P                  4      4      ^ ,          V n        R# \        P                  ! V P                  VP                  V P                  4      4      ^ ,          V n        R# rC   )rE   r4   rF   rG   r&   rH   r'   sh_namesh_typer.   r/   sh_flagsr*   r+   sh_addrr,   r-   	sh_offsetsh_sizesh_linksh_infosh_addralign
sh_entsizer`   s   &&&& r   r4   SectionHeader.__init__a   s`   (2 }}TYY

4==0IJ1M}}TYY

4==0IJ1M"MM$**ejj6PQRSTDM"MM$))UZZ5NOPQRDM}}TYY

4==0IJ1MtxxDLL1IJ1M!==UZZ5OPQRSDL!==EJJt}}4MNqQDL}}TYY

4==0IJ1M}}TYY

4==0IJ1M &djj%**T^^:T UVW XD &diiDMM9R STU VD$mmDJJ

4>>8RSTUVDO$mmDIIuzz$--7PQRSTDOr   )
rl   rq   rr   rk   rp   ro   ri   rm   rn   rj   rc   rT   s   @r   re   re   `   s    #U #Ur   re   c                  f  a  ] tR t^tR4R V 3R llltR R ltR R ltR R ltR	 R
 ltR R lt	R R lt
R R ltR R ltR R ltR R ltR R ltR R ltR R lt]R R l4       tR R  ltR! R" ltR# R$ ltR% R& lt]R' R( l4       tR) R* ltR+ R, ltR- R. ltR/ R0 ltR1 R2 ltR3tV ;t# )5Elfc               $    V ^8  d   QhRRRRRR/# )r
   bfilestrverboser   r   r   r   )r   s   "r   r   Elf.__annotate__   s!      c D D r   c                	  < Wn         W n        . V n        . V n        . V n        . V n        V P                  V4        V P                  4       w  V n        V n	        \        SV `-  V P                  V P                  4       V P                  4        V P                  4        V P                  4        V P                  4        V P!                  4        R #   \"        P$                  \&        3 d    T P)                  4        h i ; iN)rw   ry   sectionsdynamicdynsymdynsym_stringsopen_bfdetect_elf_typer   r   rE   r4   parse_headerparse_sectionsparse_dynamicparse_dynsymparse_dynsym_stringsrF   errorRuntimeErrorclose_bf)r2   rw   ry   rK   s   &&&r   r4   Elf.__init__   s    
/1-/+-+-U
	)-)=)=)?&T\4:GT\\4::6! %%'l+ 	MMO	s   BC -C<c                    V ^8  d   QhRRRR/# )r
   rw   rx   r   r   r   )r   s   "r   r   rz      s      S T r   c                	   R V n         R V n         \        VR4      V n         R #   \         d   p\        P
                  ! \        P                  ! T4      P                  4      T n        \        P                  ! T\        P                  \        P                  ,          \        P                  ,          4        \        TR4      T n          R p?R #   \         d+    \        P                  ! YP                  4       R T n        Thi ; iR p?ii ; i)Nzr+b)bfbf_permsopenPermissionErrorstatS_IMODEoslstatst_modechmodS_IREADS_IWRITES_IEXEC	Exception)r2   rw   es   && r   r   Elf.open_bf   s    
	5%(DG 	 LL%)@)@ADMHHUDLL4==84<<GHue, . $	s'   # DBD7C5DDDc                   V ^8  d   QhRR/# r
   r   r   r   )r   s   "r   r   rz      s      $ r   c                	   V P                   er   V P                  eA   \        P                  ! V P                   P	                  4       V P                  4       R V n        V P                   P                  4        R V n         R # R # r|   )r   r   r   r   filenocloser2   s   &r   r   Elf.close_bf   sS    77}}()4==9 $GGMMODG r   c                   V ^8  d   QhRR/# )r
   r   z'Elf'r   )r   s   "r   r   rz      s      5 r   c                	    V # r|   r   r   s   &r   	__enter__Elf.__enter__   s    r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   rz      s       r   c                	&    V P                  4        R # r|   r   r   s   &r   __del__Elf.__del__       r   c               (    V ^8  d   QhRRRRRRRR/# )r
   exc_typezT.Any	exc_value	tracebackr   r   r   )r   s   "r   r   rz      s(       5 U t r   c                	&    V P                  4        R # r|   r   )r2   r   r   r   s   &&&&r   __exit__Elf.__exit__   r   r   c                   V ^8  d   QhRR/# )r
   r   zT.Tuple[int, bool]r   )r   s   "r   r   rz      s      !3 r   c                	   V P                   P                  ^4      pVR,          R8w  dC   V P                  '       d   \        RV P                  : R24       \
        P                  ! ^ 4       V^,          ^8X  d   ^ pM6V^,          ^8X  d   ^@pM%\
        P                  ! RV P                  : R24       V^,          ^8X  d   RpXV3# V^,          ^8X  d   RpXV3# \
        P                  ! RV P                  : R24       XX3# )	   :      Ns   ELFFile z is not an ELF file.z has unknown ELF class.TFz has unknown ELF endianness.)r   rH   ry   printrw   sysexit)r2   datar   r   s   &   r   r   Elf.detect_elf_type   s    ww||A9 |||djj^+?@AHHQK7a<G!W\GHHuTZZN*ABC7a<E
 ~	 !W\E ~ HHuTZZN*FGH~r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   rz      s     S Sd Sr   c                	   V P                   P                  ^ 4       \        P                  ! RV P                   P	                  ^4      4      ^ ,          V n        \        P                  ! V P                  V P                   P	                  V P                  4      4      ^ ,          V n        \        P                  ! V P                  V P                   P	                  V P                  4      4      ^ ,          V n	        \        P                  ! V P                  V P                   P	                  V P                  4      4      ^ ,          V n        \        P                  ! V P                  V P                   P	                  V P                  4      4      ^ ,          V n        \        P                  ! V P                   V P                   P	                  V P"                  4      4      ^ ,          V n        \        P                  ! V P                   V P                   P	                  V P"                  4      4      ^ ,          V n        \        P                  ! V P                  V P                   P	                  V P                  4      4      ^ ,          V n        \        P                  ! V P                  V P                   P	                  V P                  4      4      ^ ,          V n        \        P                  ! V P                  V P                   P	                  V P                  4      4      ^ ,          V n        \        P                  ! V P                  V P                   P	                  V P                  4      4      ^ ,          V n        \        P                  ! V P                  V P                   P	                  V P                  4      4      ^ ,          V n        \        P                  ! V P                  V P                   P	                  V P                  4      4      ^ ,          V n        \        P                  ! V P                  V P                   P	                  V P                  4      4      ^ ,          V n        R# )r   16sN)r   seekrF   rG   rH   e_identr"   r#   e_type	e_machiner&   r'   	e_versionr*   r+   e_entryr,   r-   e_phoffe_shoffe_flagse_ehsizee_phentsizee_phnume_shentsizee_shnum
e_shstrndxr   s   &r   r   Elf.parse_header   sv   Q}}UDGGLL,<=a@mmDIItww||DMM/JKANtyy$'',,t}}2MNqQtyy$'',,t}}2MNqQ}}TYYT]]0KLQO}}TXXtww||DLL/IJ1M}}TXXtww||DLL/IJ1M}}TYYT]]0KLQOdiidmm1LMaP!==DGGLL4OPQRS}}TYYT]]0KLQO!==DGGLL4OPQRS}}TYYT]]0KLQO --		477<<3NOPQRr   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   rz      s     S S Sr   c                	   V P                   P                  V P                  4       \        V P                  4       FG  pV P
                  P                  \        V P                   V P                  V P                  4      4       KI  	  R # r|   )
r   r   r   ranger   r}   appendre   r   r   )r2   _s   & r   r   Elf.parse_sections   sP    T\\"t||$AMM  twwdjj!QR %r   c                   V ^8  d   QhRR/# )r
   r   bytesr   )r   s   "r   r   rz      s      % r   c                	    . pV P                   P                  ^4      pVR8w  dA   VP                  V4       V P                   P                  ^4      pVR8X  g   K<  \        R4      hRP	                  V4      # )r       r   z&Tried to read past the end of the file)r   rH   r   r   join)r2   arrxs   &  r   read_strElf.read_str   s\    GGLLO5jJJqMQACx"#KLLxx}r   c                    V ^8  d   QhRRRR/# )r
   target_namer   r   zT.Optional[SectionHeader]r   )r   s   "r   r   rz      s       2K r   c                	   V P                   V P                  ,          pV P                    FS  pV P                  P                  VP                  VP
                  ,           4       V P                  4       pWA8X  g   KQ  Vu # 	  R # r|   )r}   r   r   r   rm   ri   r   )r2   r   section_namesr   names   &&   r   find_sectionElf.find_section   s\    doo6AGGLL00199<===?D"	 
 r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   rz      s     	 	t 	r   c                	2   V P                  R 4      pVf   R# V P                  P                  VP                  4        \	        V P                  V P
                  V P                  4      pV P                  P                  V4       VP                  ^ 8X  g   KZ  R# s   .dynamicN)
r   r   r   rm   r<   r   r   r~   r   rI   )r2   secr   s   &  r   r   Elf.parse_dynamic   sk    ,;S]]#TWWdllDJJ?ALL"ww!|r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   rz     s     " "d "r   c                	d   V P                  R 4      pVf   R# V P                  P                  VP                  4       \	        VP
                  VP                  ,          4       FI  p\        V P                  V P                  V P                  4      pV P                  P                  V4       KK  	  R# )s   .dynsymN)r   r   r   rm   r   rn   rr   rV   r   r   r   r   )r2   r   r   r   s   &   r   r   Elf.parse_dynsym  sv    
+;S]]#s{{cnn45ADGGT\\4::>AKKq! 6r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   rz     s     A Ad Ar   c                	4   V P                  R 4      pVf   R# V P                   Fp  pV P                  P                  VP                  VP
                  ,           4       V P                  P                  V P                  4       P                  4       4       Kr  	  R#    .dynstrN)
r   r   r   r   rm   rZ   r   r   r   decode)r2   r   r   s   &  r   r   Elf.parse_dynsym_strings  sh    
+;AGGLL23&&t}}'='='?@ r   c                   V ^8  d   QhRR/# r
   r   zT.Generator[str, None, None]r   )r   s   "r   r   rz     s     + +#? +r   c              #  	  "   V P                   V P                  ,          pV P                    FY  pV P                  P                  VP                  VP
                  ,           4       V P                  4       P                  4       x  K[  	  R # 5ir|   )r}   r   r   r   rm   ri   r   r   )r2   r   r   s   &  r   get_section_namesElf.get_section_names  sY     doo6AGGLL00199<=--/((** s   B	Bc                   V ^8  d   QhRR/# r
   r   zT.Optional[str]r   )r   s   "r   r   rz     s     ( (O (r   c                	L   R pR pV P                    F3  pVP                  \        8X  d   TpVP                  \        8X  g   K1  TpK5  	  Ve   Vf   R # V P                  P                  VP                  VP                  ,           4       V P                  4       P                  4       # r|   )	r~   rI   	DT_SONAME	DT_STRTABr   r   rJ   r   r   )r2   sonamestrtabr   s   &   r   
get_sonameElf.get_soname  s|    Aww)#ww)#	 
 >V^VZZ&**,-}}%%''r   c                    V ^8  d   QhRRRR/# )r
   entrynumr   r   zT.Optional[int]r   )r   s   "r   r   rz   *  s        r   c                	    V P                  R 4      pV P                   FM  pVP                  V8X  g   K  VP                  VP                  ,           p\        V\        4      '       g   Q hVu # 	  R# r   )r   r~   rI   rm   rJ   
isinstancer   )r2   r  r   r   ress   &&   r   get_entry_offsetElf.get_entry_offset*  s[    
+Aww("mmaee+!#s++++
	 
 r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   rz   3  s     ( (? (r   c                	    V P                  \        4      pVf   R # V P                  P                  V4       V P	                  4       P                  4       # r|   )r  DT_RPATHr   r   r   r   r2   offsets   & r   	get_rpathElf.get_rpath3  s?    &&x0>V}}%%''r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   rz   :  s     ( (_ (r   c                	    V P                  \        4      pVf   R # V P                  P                  V4       V P	                  4       P                  4       # r|   )r  
DT_RUNPATHr   r   r   r   r  s   & r   get_runpathElf.get_runpath:  s?    &&z2>V}}%%''r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   rz   B  s     / /6 /r   c              #  	4  "   V P                  R 4      pV P                   Fr  pVP                  \        8X  g   K  VP                  VP
                  ,           pV P                  P                  V4       V P                  4       P                  4       x  Kt  	  R# 5ir   )
r   r~   rI   	DT_NEEDEDrm   rJ   r   r   r   r   )r2   r   r   r  s   &   r   get_depsElf.get_depsA  sf     
+Aww)#.V$mmo,,..	 s   3BABc                    V ^8  d   QhRRRR/# )r
   prefixr   r   r   r   )r   s   "r   r   rz   J  s     ' 'u ' 'r   c                	   V P                  R 4      p. pV P                   F+  pVP                  \        8X  g   K  VP	                  V4       K-  	  V F  pVP
                  VP                  ,           pV P                  P                  V4       V P                  4       pVP                  V4      '       g   Kd  VP                  R^R7      R,          pR\        V4      \        V4      ,
          ,          pWx,           p	\        V	4      \        V4      8X  g   Q hV P                  P                  V4       V P                  P                  V	4       K  	  R# )r      /)maxsplitr   N)r   r~   rI   r  r   rm   rJ   r   r   r   
startswithrsplitlenrP   )
r2   r  r   depsr   r  r   basenamepaddingnewnames
   &&        r   fix_depsElf.fix_depsJ  s    
+Aww)#A  A]]QUU*FGGLL ==?Dv&&;;ta;8<3t9s8}#<=",7|s4y000V$g& r   c               (    V ^8  d   QhRRRRRRRR/# )	r
   fnamerx   rpath_dirs_to_removeT.Set[bytes]	new_rpathr   r   r   r   )r   s   "r   r   rz   \  s0     U Us U, USX U]a Ur   c                	b    V P                  WV\        4       V P                  WV\        4       R # r|   )fix_rpathtype_entryr  r  )r2   r.  r/  r1  s   &&&&r   	fix_rpathElf.fix_rpath\  s(     	  iR  iTr   c          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )r
   r.  rx   r/  r0  r1  r   r  r   r   r   r   )r   s   "r   r   rz   b  s2     +! +! +!L +!]b +!nq +!vz +!r   c                	   V P                  V4      pVf%   V P                  '       d   \        RV: R24       R # V P                  P	                  V4       V P                  4       p\        4       pV'       d!   VP                  VP                  R4      4       V'       dU   VP                  R4       F?  pW9   d   K  VR\        V4      ,          8X  d   K$  V'       g   K.  VP                  V4       KA  	  RP                  V4      p\        V4      \        V4      8  dG   RP                  VP                  R4      VP                  R4      4      p	\        P                  ! V	4       V'       g   V P!                  V4       R # V P                  P	                  V4       V P                  P#                  V4       V P                  P#                  R4       R # )Nr   z@ does not have an rpath. It should be a fully static executable.   :   Xz@New rpath must not be longer than the old one.
 Old: {}
 New: {}utf-8r   )r  ry   r   r   r   r   r   updatesplitr&  addr   r   r   r   r   remove_rpath_entryrP   )
r2   r.  r/  r1  r  rp_off	old_rpath
new_rpaths	rpath_dirmsgs
   &&&&&     r   r3  Elf.fix_rpathtype_entryb  sd   &&x0>|||eY&fghVMMO	 )3
iood34 '__T2	!9!dS^&;< y"y1	 3 IIj)	y>C	N*V]]^g^n^nov^w  zC  zJ  zJ  KR  zS  TCHHSM ##H-GGLL GGMM)$GGMM% r   c                    V ^8  d   QhRRRR/# r
   r  r   r   r   r   )r   s   "r   r   rz     s     !D !D !D !Dr   c                	   V P                  V4      pV P                  P                  V4       V P                  4       P	                  4       pR pV P
                   F9  pVP                  V4      '       g   K  \        V4      \        V4      8  g   K7  TpK;  	  V P                  P                  V4       V P                  P                  R\        V4      \        V4      ,
          ,          4       R# ) r9  N)	r  r   r   r   r   r   endswithr&  rP   )r2   r  r  rpath_string
reused_strdynsym_strings   &&    r   clean_rpath_entry_stringElf.clean_rpath_entry_string  s    &&x0V}}--/
* "00M$$]33}%J7!.J 1 	Vdc,/#j/ABCr   c                    V ^8  d   QhRRRR/# rF  r   )r   s   "r   r   rz     s      3 4 r   c                	   V P                  R 4      pVf   R# \        V P                  4       Fz  w  r4VP                  V8X  g   K  V P	                  V4       V P                  V,          p^ Vn        V P                  RV V P                  V^,           R ,           V.,           V n         M	  V P                  XR  FK  pVP                  \
        8X  g   K  V;P                  ^V P                  ^,          ,          ,          un         M	  V P                  P                  VP                  4       V P                   F  pVP                  V P                  4       K   	  R# r   )r   	enumerater~   rI   rM  DT_MIPS_RLD_MAP_RELrJ   r   r   r   rm   rP   )r2   r  r   r   entryrpentrys   &&    r   r>  Elf.remove_rpath_entry  s   ,;#DLL1JQ{{h&--h7,,q/ !#||BQ/$,,q1uv2FF'R 2 \\!"%E{{11		Q$,,!"344	 & 	S]]#\\EKK  "r   )r   r   rw   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r}   ry   T) r6   r7   r8   r9   r4   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r+  r4  r3  rM  r>  r:   rS   rT   s   @r   ru   ru      s     (,S"S
	"A + +((( / /'$U+!Z!DF r   ru   c          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )r
   r.  rx   r/  r0  r1  zT.Optional[bytes]ry   r   r   r   r   )r   s   "r   r   r     s9     @ @3 @l @GX @cg @sw @r   c                    Ve1   \        W4      ;_uu_ 4       pVP                  WV4       R R R 4       R # R #   + '       g   i     R # ; ir|   )ru   r4  )r.  r/  r1  ry   r   s   &&&& r   fix_elfrY    s:      AKKY? !     s	   7A	c                    V ^8  d   QhRRRR/# )r
   r.  rx   r   zOrderedSet[str]r   )r   s   "r   r   r     s      S _ r   c                &   \        R RV .\        P                  R7      w  rpVP                  ^ 8w  d-   \        P                  ! VP                  VP
                  V4      h\        4       pRpVP                  R4       F  pVP                  4       pRV9  d   K  VP                  4       P                  R^4      w  rxVR8X  d   TpVR8X  g   KP  VR8X  g   KY  VP                  R	^4      ^ ,          P                  4       p	VP                  V	4       K  	  V# )
otoolz-l)stderrFOOBAR
 cmdpathLC_RPATH()
r   
subprocessDEVNULL
returncodeCalledProcessErrorargsr   r<  stripr=  )
r.  r3   outr   resultcurrent_cmdlinekeyvaluerps
   &         r   get_darwin_rpathsrr    s    GT51*:L:LMIAA||q++ALL!&&#FF )lFK		$zz|d?ZZ\''Q/
%<K&=[J6S!$Q'--/BJJrN   Mr   c               0    V ^8  d   QhRRRRRRRRRRR	R
/# )r
   r.  rx   r/  r0  r1  
final_pathinstall_name_mappingsT.Dict[str, str]r   r   r   )r   s   "r   r   r     sA     % %c % %# %[^ %  xH %  MQ %r   c                8    \        V 4      p\        4       pT'       d!   TP	                  TP                  R4      4       T Uu. uF  qwP                  R4      NK  	  ppT F&  p	T	'       g   K  Y9  g   K  TP                  T	4       K(  	   . p
T F  pY9  g   K  T
RT.,          p
K  	  T F  pY9  g   K  T
RT.,          p
K  	  T P                  R4      '       d   T
RT.,          p
T'       d%   TP                  4        F  w  rT
RY.,          p
K  	  T
'       dA   \        P                  ! RT .T
,           \        P                  \        P                  R	7       R # R #   \        P                   d     R # i ; iu upi   \         d   p\        T4      hR p?ii ; i)
N:utf8z
-add_rpathz-delete_rpathdylibz-idz-changeinstall_name_tool)stdoutr]  )rr  re  rh  r   r;  r<  r   r=  rI  items
check_callrf  r   
SystemExit)r.  r/  r1  rt  ru  
old_rpathsrA  r   remove_rpathsrB  ri  rb  oldnewerrs   &&&&&          r   
fix_darwinr    sy   &u-

 #-,J)//#./ 0DD/C!XXf%/CMD	97NN9%   D%t,,  D%$//  >>'""UJ''D 1779C-- :!!#6">"E)3););)3););= ; ((  	 E0  osM   E E9
E> E> 6%E> E> /+E> >E> E65E6>F	FFc                    V ^8  d   QhRRRR/# )r
   r.  rx   r   r   r   )r   s   "r   r   r   	  s     I I3 I4 Ir   c                   \         P                  ! R RV R.4       \        RRRR7      ;_uu_ 4       pVP                  4       pVP	                  ^ 4       V F-  pVP                  R4      '       d   K  VP                  V4       K/  	  VP                  4        RRR4       \         P                  ! R RV R.4       R#   + '       g   i     L,; i)	jarxfzMETA-INF/MANIFEST.MFzr+r:  )encodingzClass-Path:NufM)re  r~  r   	readlinesr   r$  rP   truncate)r.  flinesrn  s   &   r   fix_jarr  	  s    5$/EFG	$dW	=	=	q	D??=11  	


 
> 5%0FGH 
>	=s   ;B:1%B::C
	c               4    V ^8  d   QhRRRRRRRRRR	R
RRR/# )r
   r.  rx   r/  r0  r1  zT.Union[str, bytes]rt  ru  rv  ry   r   r   r   r   )r   s   "r   r   r     sW     ^ ^S ^ ^I\ ^jm ^  GW ^  bf ^  rv ^r   c                V   V P                  R4      '       d   R#  V P                  R4      '       d   \        V 4       R# \        V\        4      '       d   VP	                  R4      p\        WW%4       R#   \         d=   p\        TP                  \        4      '       d   TP                  ^ 8X  d    Rp?M	h Rp?ii ; i\        RJ d    \        \        P                  ! R4      4      s	\        '       d7   \        T\        4      '       d   TP                  R4      p\        YY#T4       R# R# ).aNz.jarry  Fr{  )r  z.libz.pdbz.hz.hppz.dllz.exe)rI  r  r	  rx   encoderY  r  coder   INSTALL_NAME_TOOLr   shutilwhichr   r   r  )r.  r/  r1  rt  ru  ry   r   s   &&&&&& r   r4  r4    s    
 ~~JKK>>&!!ENi%%!((0IY@ affc""qvv{	 E! .A!BCi''!((0I5	G\] s'   A4 A4 3A4 4B;?1B65B66B;rV  ) 
__future__r   r   r   r   rF   r  re  typingTmesonlibr   r   r   
SHT_STRTABr  r  r  r  r   rR  r  r   r<   rV   re   ru   rY  rr  r  r  r4  r   r   r   <module>r     s    #  	      < <
	
		     >:9 :&Y) Y$$UI $UL) B
@*%NI ^ ^r   