+
    Bi                        ^ RI 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
 ^ RIHt ]
P                  '       g   ]P                  ! R4      hR tR t ! R R4      t ! R	 R
]4      t ! R R]4      t ! R R4      t ! R R]]P*                  4      t ! R R]]P*                  4      t ! R R]]P*                  4      t ! R R]]P*                  4      t ! R R]P*                  4      t]R8X  d   ]P8                  ! 4        R# R# )    N)support)findfileztest module requires subprocessc                 V    \         P                  P                  \        V R R7      4      # )
dtracedata)subdir)ospathabspathr   )filenames   &'/usr/lib/python3.14/test/test_dtrace.pyr
   r
      s    77??8H\BCC    c                    \         P                  ! R RV 4      p  V P                  4        Uu. uF7  pV'       g   K  VP                  R4      '       d   K&  VP	                  R4      NK9  	  ppVP                  R R7       V Uu. uF  q^,          NK  	  ppRP                  V4      # u upi u upi   \        \        3 d    \        RP                  T 4      4      hi ; i)z\[[0-9]+ refs\] #	c                 &    \        V ^ ,          4      # )r   )int)rows   &r   <lambda>(normalize_trace_output.<locals>.<lambda>&   s    CAKr   )key
z%tracer produced unparsable output:
{})resub
splitlines
startswithsplitsortjoin
IndexError
ValueErrorAssertionErrorformat)outputr   results   &  r   normalize_trace_outputr&      s     VV&F3F
 ((*
* >>#. CIIdO* 	 

 	/0$*+FSa&&F+yy  
 ,
# 
4;;FC
 	

s3   B0 
B&B&B&)B0 B+B0 &
B0 0,Cc                   Z   a  ] tR t^/t o RtRt. tRR ltRR ltRR lt	RR lt
R tRtV tR# )	TraceBackendNc           	     t   \        V P                  \        WP                  ,           4      \        VR ,           4      VR7      4      p\	        \        WP                  ,           R,           4      4      ;_uu_ 4       pVP                  4       P                  4       pRRR4       WS3#   + '       g   i     XT3# ; i)z.py)script_filepython_fileoptimize_pythonz	.expectedN)r&   trace_pythonr
   	EXTENSIONopenreadrstrip)selfnamer,   actual_outputfexpected_outputs   &&&   r   run_caseTraceBackend.run_case4   s    .t/@/@~~ 56u-+ 0A 0- .
 '$/+=>??1ffhoo/O @  // @?  //s   :B$$B7	c                T    V P                   V.,           pV'       d   VR V.,          pV# )z-c)COMMAND)r2   r*   
subcommandcommands   &&& r   generate_trace_command#TraceBackend.generate_trace_command?   s)    ,,+.j))Gr   c                    V P                  W4      p\        P                  ! V\        P                  \        P                  R R7      P                  4       w  rEV# )Tstdoutstderruniversal_newlines)r=   
subprocessPopenPIPESTDOUTcommunicate)r2   r*   r;   r<   rA   _s   &&&   r   traceTraceBackend.traceE   sM    --kF$$W,6OO,6,=,=8<> ?Jkm 	 r   c                    . pV'       d   VP                  R .V,          4       RP                  \        P                  .V,           V.,           4      pV P	                  W4      # )z-O )extendr   sys
executablerJ   )r2   r*   r+   r,   python_flagsr;   s   &&&&  r   r-   TraceBackend.trace_pythonM   sO     89XXs~~.=MN
zz+22r   c                V    V P                  \        R V P                  ,           4      4      pVP                  4       pVR8w  d8   \        P                  ! RP                  V P                  ^ ,          V4      4      hR#   \        \
        \        3 d   p\        T4      p Rp?LfRp?ii ; i)assert_usableNzprobe: successz{}(1) failed: {})rJ   r
   r.   stripFileNotFoundErrorNotADirectoryErrorPermissionErrorstrunittestSkipTestr#   r:   )r2   r$   fnfes   &  r   rT   TraceBackend.assert_usableT   s    	ZZ$..(H IJF\\^F %%##"))$,,q/6B  & "#5G 	YF	s   ;A= =B(B##B( N)__name__
__module____qualname____firstlineno__r.   r:   COMMAND_ARGSr7   r=   rJ   r-   rT   __static_attributes____classdictcell____classdict__s   @r   r(   r(   /   s2     IGL	03	 	r   r(   c                   "    ] tR t^`tRt. ROtRtR# )DTraceBackendz.dr^   N)dtracez-qz-sr`   ra   rb   rc   r.   r:   re   r^   r   r   rj   rj   `   s    I$Gr   rj   c                   "    ] tR t^etRtRR.tRtR# )SystemTapBackendz.stpstapz-gr^   Nrl   r^   r   r   rn   rn   e   s    ItnGr   rn   c                   Z   a  ] tR t^jt o RtRt^ t]R 4       tR t	R t
R tR tR tRtV tR# )	
TraceTestsNc                :    V P                   P                  4        R # r_   )backendrT   r2   s   &r   
setUpClassTraceTests.setUpClassr   s    ""$r   c                x    V P                   P                  WP                  R 7      w  r#V P                  W#4       R# ))r,   N)rs   r7   r,   assertEqual)r2   r3   r4   r6   s   &&  r   r7   TraceTests.run_casev   s5    )-)>)>"6"6 *? *8&8r   c                (    V P                  R 4       R# )
call_stackNr7   rt   s   &r   test_function_entry_return%TraceTests.test_function_entry_return{   s    l#r   c                J  a a \        . RO4      p\        \        R4      4      ;_uu_ 4       pVP                  4       oRRR4       VV 3R lpV! R4       F  pVP	                  VP
                  4       K   	  S P                  \        4       V4       R#   + '       g   i     L]; i)CALL_FUNCTIONzcall_stack.pyNc                    < \        SR RSP                  R7      pVP                   FN  p\        V\        P
                  4      '       g   K%  VP                  V 8X  g   K8  \        P                  ! V4      u # 	  . # )z<string>exec)sourcer   modeoptimize)	compiler,   	co_consts
isinstancetypesCodeTypeco_namedisget_instructions)funcnamecodeccode_stringr2   s   &  r   get_function_instructionsFTraceTests.test_verify_call_opcodes.<locals>.get_function_instructions   sb    +$. &$($8$8:D
 ^^a00QYY(5J//22 $ Ir   start)r   CALL_FUNCTION_EXCALL_FUNCTION_KW)setr/   r
   r0   discardopnamerx   )r2   opcodesr5   r   instructionr   s   f    @r   test_verify_call_opcodes#TraceTests.test_verify_call_opcodes~   sw     OP'/*++q&&(K ,
	 5W=KOOK../ > 	(% ,+s   BB"	c                (    V P                  R 4       R# )gcNr|   rt   s   &r   test_gcTraceTests.test_gc   s    dr   c                (    V P                  R 4       R# )lineNr|   rt   s   &r   	test_lineTraceTests.test_line   s    fr   r^   )r`   ra   rb   rc   maxDiffrs   r,   classmethodru   r7   r}   r   r   r   re   rf   rg   s   @r   rq   rq   j   sF     G GO% %9
$)2 r   rq   c                   (    ] tR t^t]! 4       t^ tRtR# )DTraceNormalTestsr^   Nr`   ra   rb   rc   rj   rs   r,   re   r^   r   r   r   r          oGOr   r   c                   (    ] tR t^t]! 4       t^tRtR# )DTraceOptimizedTestsr^   Nr   r^   r   r   r   r      r   r   r   c                   (    ] tR t^t]! 4       t^ tRtR# )SystemTapNormalTestsr^   Nr`   ra   rb   rc   rn   rs   r,   re   r^   r   r   r   r           GOr   r   c                   (    ] tR t^t]! 4       t^tRtR# )SystemTapOptimizedTestsr^   Nr   r^   r   r   r   r      r   r   r   c                   p   a  ] tR t^t o ]R 4       t]R 4       tR tR t	]
P                  R 4       tRtV tR# )CheckDtraceProbesc                    \         P                  ! R 4      '       d>   V P                  4       w  r\        P                  '       d   \        RV RV 24       R# R# \        P                  ! R4      h)WITH_DTRACEzreadelf version: .z9CPython must be configured with the --with-dtrace option.N)	sysconfigget_config_varget_readelf_versionr   verboseprintrZ   r[   )clsreadelf_major_versionreadelf_minor_versions   &  r   ru   CheckDtraceProbes.setUpClass   sa    ##M22;>;R;R;T8!)*?)@BWAXYZ  ##$_``r   c            
         R R.p \         P                  ! V \         P                  \         P                  RR7      pV;_uu_ 4        VP                  4       w  r#RRR4       VP                  '       d4   \        RRP                  V 4      : RVP                   RX: R	X: 24      h \        P                  ! RX4      pTf   \        P                  ! RT 24      h\        TP                  ^4      4      \        TP                  ^4      4      3#   + '       g   i     L; i  \         d    \        P                  ! R
4      hi ; i)readelfz	--versionTr@   NzCommand rM   z failed with exit code z	: stdout=z stderr=z!Couldn't find readelf on the pathz!^(?:GNU) readelf.*?\b(\d+)\.(\d+)z!Unable to parse readelf version: )rD   rE   rF   rH   
returncode	Exceptionr   OSErrorrZ   r[   r   searchr   group)cmdprocversionrB   matchs        r   r   %CheckDtraceProbes.get_readelf_version   s%   	Ik*C##!!#'	D "&"2"2"4  sxx}/ 0&&*oo%6 7%[
<   		>H=##&Gy$QRR5;;q>"CA$777%   	I##$GHH	Is*   AD" DD" 33D" D	D" ""Ec                    R R\         P                  .p\        P                  ! V\        P                  \        P
                  RR7      P                  4       w  r#V# )r   z-nTr@   )rO   rP   rD   rE   rF   rG   rH   )r2   r<   rA   rI   s   &   r   get_readelf_output$CheckDtraceProbes.get_readelf_output   sM    dCNN3$$??$$#	

 +- 	 r   c                    V P                  4       p. ROpV F7  pV P                  VR7      ;_uu_ 4        V P                  W14       RRR4       K9  	  R#   + '       g   i     KN  ; i)Name: import__find__load__done
probe_nameN)r   zName: import__find__load__startzName: auditzName: gc__startzName: gc__doner   subTestassertIn)r2   readelf_outputavailable_probe_namesr   s   &   r   test_check_probes#CheckDtraceProbes.test_check_probes   sS    002!
 0J44j9 54 0444   AA%c                    V P                  4       p. ROpV F7  pV P                  VR7      ;_uu_ 4        V P                  W14       RRR4       K9  	  R#   + '       g   i     KN  ; i)Name: function__entryr   N)r   zName: function__returnz
Name: liner   )r2   r   missing_probe_namesr   s   &   r   test_missing_probes%CheckDtraceProbes.test_missing_probes   sS    002
 .J44j9 54 .444r   r^   N)r`   ra   rb   rc   r   ru   staticmethodr   r   r   rZ   expectedFailurer   re   rf   rg   s   @r   r   r      sQ     a a 8 8:: : :r   r   __main__)r   os.pathr   r   rD   rO   r   r   rZ   testr   test.supportr   has_subprocess_supportr[   r
   r&   r(   rj   rn   rq   TestCaser   r   r   r   r   r`   mainr^   r   r   <module>r      s    
  	  
     ! %%%


=
>>D
2. .b%L %
| 
1 1h
H$5$5 
:x'8'8 
:x'8'8 
j(*;*; O:)) O:d zMMO r   