
    sh                     :    S r SSKJrJr  SSKrSSKrSSKJr  S rg)zMiscellaneous inspection tools
    )NamedTemporaryFileTemporaryDirectoryN)NumbaWarningc                    ^ ^^^  SSK mSU UU4S jjm " U4S jS[        5      nU" 5       $ ! [         a    [        S5      ef = f)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                   > SSK Jn  U c  [        S5      e[        5        n[	        SUS9 nUR                  T5        UR                  5         S S S 5        Sn [        R                  R                  WR                  5       S3n[        R                  R                  X%5      nU" 5       nUR                  XcR                  45        UnSn / S
QnTR#                  XS9nUR%                  S5        U(       a<  TS S nUR%                  S5        UR%                  SU S35        UR%                  S5        UR%                  SU -  5      nUR'                  5          S S S 5        U$ ! , (       d  f       GN= f! [         a;  n	SU	 S	3n
[        R                  " [!        U
5      5        WR                  n S n	A	NS n	A	ff = f! [         a#  n	S[)        U	5      ;   a  Sn
[+        U
5      eU	eS n	A	ff = f! , (       d  f       W$ = f)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 PATHzThis 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                  i/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/misc/inspection.pyget_rendering-disassemble_elf_to_cfg.<locals>.get_rendering   s   1;/00!V#5f=	 >
 F("$''"2"2166":!;3?WW\\&?
[zFF95!+ KKK<h ,:3B,?)EE01EEG$9#:$?@EE/0uuTCZ(a "t q >=  	(''(c *&& l3/0!"	(D  $A.=C 's++Gc "!t sf   G+"E!
G+A2E3BF;!
E0	+G+3
F8=1F3.G+3F88G+;
G(G##G((G++
G:c                   .   > \ rS rSrU 4S jrU 4S jrSrg))disassemble_elf_to_cfg.<locals>.DisasmCFGV   c                    >  SS K nT" SS9nUR                  SS5        UR	                  U5      nUR                  S5      R                  S5      $ ! [         a    [        S5      ef = f)	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)selfr9   jupyter_renderingsrcr0   s       r/   
_repr_svg_4disassemble_elf_to_cfg.<locals>.DisasmCFG._repr_svg_X   su    M !.& 9%%&;&FH//"34C88E?))'22  M"#KLLMs   A A&c                    > T" SS9$ )Nagfr7    )r?   r0   s    r/   __repr__2disassemble_elf_to_cfg.<locals>.DisasmCFG.__repr__d   s     U++    rF   N)__name__
__module____qualname____firstlineno__rB   rG   __static_attributes__)r0   s   r/   	DisasmCFGr3   V   s    
	3	, 	,rI   rO   )N)r.   r:   r   object)r,   r-   rO   r0   r.   s   `` @@r/   disassemble_elf_to_cfgrQ   
   sM    C? ?B,F ," ;k  CABBCs	   - A)	__doc__tempfiler   r   r   r   numba.core.errorsr   rQ   rF   rI   r/   <module>rU      s    ; 	  *]rI   