
    J/Ph                     <    d Z ddlmZmZ ddlZddlZddlmZ d ZdS )zMiscellaneous inspection tools
    )NamedTemporaryFileTemporaryDirectoryN)NumbaWarningc                      	 ddl n# t          $ r t          d          w xY wd fd	 G fddt                    } |            S )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                 b   ddl m} | t          d          t                      5 }t	          d|          5 }|                               |                                 d d d            n# 1 swxY w Y   d}	 t          j        	                    |j
                   d}t          j                            ||          } |            }|                    ||j
        f           |}d}nE# t          $ r8}	d|	 d	}
t          j        t!          |
                     |j
        }Y d }	~	nd }	~	ww xY w	 g d
}                    ||          }|                    d           |rMd d         }|                    d           |                    d| d           |                    d           |                    d| z            }|                                 n6# t          $ r)}	dt)          |	          v rd}
t+          |
          |	d }	~	ww xY w	 d d d            n# 1 swxY w Y   |S )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                  U/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/misc/inspection.pyget_renderingz-disassemble_elf_to_cfg.<locals>.get_rendering   s   111111;/000!! 9	V#5f=== 			              
 F("$'"2"216":":???W\\&,??
Y[[zAF9555!+ 	( 	( 	(&'(& & & l3//000!"	(   KKeK<<h  1,:3B3,?)EE0111EE?$9???@@@EE/000uuTCZ((   $A..=C 's+++G a9	 9	 9	 9	 9	 9	 9	 9	 9	 9	 9	 9	 9	 9	 9	t s   H$*A/#H$/A3	3H$6A3	7H$=A1C/.H$/
D19.D,'H$,D11H$5B+G! H$!
H+$HHH$$H(+H(c                   $    e Zd Z fdZ fdZdS ))disassemble_elf_to_cfg.<locals>.DisasmCFGc                    	 dd l }n# t          $ r t          d          w xY w d          }|                    dd           |                    |          }|                    d                              d          S )	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   s    M M M M"#KLLLM -& 9 9 9%%&;&FH H H//"344C88E??))'222s    "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   sG        
	3 
	3 
	3 
	3 
	3	, 	, 	, 	, 	, 	, 	,rE   rI   )N)r.   r8   r   object)r,   r-   rI   r0   r.   s   `` @@r/   disassemble_elf_to_cfgrK   
   s    C C C CABBBC? ? ? ? ? ? ? ?B, , , , , , ,F , , ," 9;;s    %)	__doc__tempfiler   r   r   r   numba.core.errorsr   rK   rC   rE   r/   <module>rO      si     ; ; ; ; ; ; ; ; 				  * * * * * *] ] ] ] ]rE   