Ë
    üÇ:j“  ã                   ó:   — d Z ddlmZmZ ddlZddlZddlmZ d„ Zy)zMiscellaneous inspection tools
é    )ÚNamedTemporaryFileÚTemporaryDirectoryN)ÚNumbaWarningc                 ó„   ‡ ‡‡‡— 	 ddl Šdˆ ˆˆfd„	Š G ˆfd„dt        «      } |«       S # t        $ r t        d«      ‚w xY w)zÂ
    Gets the CFG of the disassembly of an ELF object, elf, at mangled name,
    mangled_symbol, and renders it appropriately depending on the execution
    environment (terminal/notebook).
    r   Nz$r2pipe package needed for disasm CFGc                 óâ  •— ddl m} | €t        d«      ‚t        «       5 }t	        d|¬«      5 }|j                  ‰«       |j                  «        d d d «       d}	 t        j                  j                  j                  «      › d�}t        j                  j                  ||«      } |«       }|j                  ||j                  f«       |}d}	 g d
¢}‰j#                  ||¬«      }|j%                  d«       |r<‰d d }|j%                  d«       |j%                  d|› d�«       |j%                  d«       |j%                  d| z  «      }|j'                  «        	 d d d «       |S # 1 sw Y   �ŒxY w# t        $ r:}	d|	› d	�}
t        j                  t!        |
«      «       j                  }Y d }	~	Œád }	~	ww xY w# t        $ r!}	dt)        |	«      v rd}
t+        |
«      ‚|	‚d }	~	ww xY w# 1 sw Y   S xY w)Nr   )Ú	ToolchainzNo command givenF)ÚdeleteÚdirz.soTzALinking the ELF object with the distutils toolchain failed with: z\. Disassembly will still work but might be less accurate and will not use DWARF information.)z-2z-e io.cache=truez-e scr.color=1z-e asm.dwarf=truez-e scr.utf8=true)ÚflagsÚaaaaaaé=   ze bin.demangle=falsezs `is~ z[1]`ze bin.demangle=truez%szradare2 in PATHz–This feature requires 'radare2' to be installed and available on the system see: https://github.com/radareorg/radare2. Cannot find 'radare2' in $PATH.)Únumba.pycc.platformr   Ú
ValueErrorr   r   ÚwriteÚflushÚosÚpathÚbasenameÚnameÚjoinÚlink_sharedÚ	ExceptionÚwarningsÚwarnr   ÚopenÚcmdÚquitÚstrÚRuntimeError)r   r   ÚtmpdirÚfÚlinkedÚraw_dso_nameÚ
linked_dsoÚtcÚobj_to_analyseÚeÚmsgr   ÚrÚmangled_symbol_61charÚdataÚelfÚmangled_symbolÚr2pipes                  €€€új/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/numba/misc/inspection.pyÚget_renderingz-disassemble_elf_to_cfg.<locals>.get_rendering   sß  ø€ Ý1Øˆ;ÜÐ/Ó0Ð0äÓ!ð 9	 Vä#¨5°fÔ=ð ÀØ—‘˜”Ø—‘”	÷ð
 ˆFð(Ü"$§'¡'×"2Ñ"2°1·6±6Ó":Ð!;¸3Ð?�ÜŸW™WŸ\™\¨&°,Ó?�
Ù“[�Ø—‘˜z¨A¯F©F¨9Ô5Ø!+�Ø�ðò�ð —K‘K °e�KÓ<�Ø—‘�h”ñ à,:¸3¸BÐ,?Ð)à—E‘EÐ0Ô1à—E‘E˜GÐ$9Ð#:¸$Ð?Ô@à—E‘EÐ/Ô0Ø—u‘u˜T C™ZÓ(�Ø—‘•÷a9	ðt ˆ÷qñ ûô ò 	(ð'Ø'( cð *&ð&�ô —‘œl¨3Ó/Ô0Ø!"§¡•ûð	(ûôD ò Ø$¬¨A«Ñ.ð=�Cô ' sÓ+Ð+à�Gûðú÷c9	ðt ˆúsf   ŸG$­"E$Á
G$ÁA4E1ÃB
F7Å$E.	Å)G$Å1	F4Å:0F/Æ*G$Æ/F4Æ4G$Æ7	G!Ç GÇG!Ç!G$Ç$G.c                   ó"   •— e Zd Zˆ fd„Zˆ fd„Zy)ú)disassemble_elf_to_cfg.<locals>.DisasmCFGc                 óÖ   •— 	 dd l } ‰d¬«      }|j                  dd«       |j	                  |«      }|j                  d«      j                  d«      S # t        $ r t        d«      ‚w xY w)	Nr   z&graphviz package needed for disasm CFGÚagfd©r   zfontname="Courier",zfontname="Courier",fontsize=6,ÚsvgzUTF-8)ÚgraphvizÚImportErrorr   ÚreplaceÚSourceÚpipeÚdecode)Úselfr7   Újupyter_renderingÚsrcr0   s       €r/   Ú
_repr_svg_z4disassemble_elf_to_cfg.<locals>.DisasmCFG._repr_svg_X   su   ø€ ðMÛñ !.°&Ô 9Ðà×%Ñ%Ð&;Ø&FôHà—/‘/Ð"3Ó4ˆCØ—8‘8˜E“?×)Ñ)¨'Ó2Ð2øô ò MÜ"Ð#KÓLÐLðMús   ƒA ÁA(c                 ó   •—  ‰d¬«      S )NÚagfr5   © )r=   r0   s    €r/   Ú__repr__z2disassemble_elf_to_cfg.<locals>.DisasmCFG.__repr__d   s   ø€ Ù  UÔ+Ð+ó    N)Ú__name__Ú
__module__Ú__qualname__r@   rD   )r0   s   €r/   Ú	DisasmCFGr2   V   s   ø„ ô
	3õ	,rE   rI   )N)r.   r8   r   Úobject)r,   r-   rI   r0   r.   s   `` @@r/   Údisassemble_elf_to_cfgrK   
   sH   û€ ðCÛ÷?öB,”Fô ,ñ" ‹;Ðøôk ò CÜÐAÓBÐBðCús   †* ª?)	Ú__doc__Útempfiler   r   r   r   Únumba.core.errorsr   rK   rC   rE   r/   ú<module>rO      s   ðñç ;Û 	Û å *ó]rE   