File: //proc/thread-self/root/usr/local/lib/python3.7/test/__pycache__/test_gdb.cpython-37.opt-2.pyc
B
��g[� � @ s d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl m
Z
d dlmZm
Z
mZ dd� Ze� \ZZZedk r�e�deeef ��e�� s�e�d��d e�� kr�ejd
kr�e�d��ej�ej�ej�d�Zd
Zdd� Ze� Zdd� Zed�\ZZ e�se�d��edej�\Z Z!de!k�rHdZ"e�e"e!�#� ��dd� Z$e$� Z%dZ&e�'e
j(d�G dd� dej)��Z*G dd� de*�Z+e�'e� d�G d d!� d!e*��Z,G d"d#� d#e*�Z-G d$d%� d%e*�Z.G d&d'� d'e*�Z/G d(d)� d)e*�Z0d*d+� Z1e2d,k�r e1� dS )-� N)�support)�run_unittest�findfile�python_is_optimizedc C s� yndddg} t j| t jt jdd�}|� |�� \}}W d Q R X |jrltdd�| ��d|j� d |�d
|����W n tk
r� t� d��Y nX t
�d|�}|d kr�td
| ��|t|�
d��t|�
d��fS )N�gdbz-nxz --versionT)�stdout�stderrZuniversal_newlineszCommand � z failed with exit code z : stdout=z stderr=zCouldn't find gdb on the pathz^GNU gdb.*?\b(\d+)\.(\d+)zunable to parse GDB version: %r� � )�
subprocess�Popen�PIPE�communicate�
returncode� Exception�join�OSError�unittest�SkipTest�re�search�int�group)�cmd�proc�versionr �match� r �)/usr/local/lib/python3.7/test/test_gdb.py�get_gdb_version s
,r � zFgdb versions before 7.0 didn't support python embedding. Saw %s.%s:
%sz3test_gdb only works on source builds at the moment.ZClang�darwinzDtest_gdb doesn't work correctly when python is built with LLVM clangz
python-gdb.pyZ123c C s4 t �d�} | sdS | �� }d|ko2tdd� |D ��S )NZCFLAGSFz-mcetc s s$ | ]}|� d �o|�d� V qdS )z-fcf-protection)z=nonez=returnN)�
startswith�endswith)�.0�flagr r r � <genexpr>M s z!cet_protection.<locals>.<genexpr>)� sysconfigZget_config_var�split�any)Zcflags�flagsr r r �cet_protectionE s
r, c O s� |rt j�� }|�|� nd }d}ttfdkr>|ddt f7 }tj|| tj tj tj |d�}|� |�
� \}}W d Q R X |�dd�|�dd�fS )N)r z--batchz-nx)r! � z-iexzadd-auto-load-safe-path )�stdinr r �envzutf-8�replace)�os�environ�copy�update�gdb_major_version�gdb_minor_version�checkout_hook_pathr r
r r �decode)�argsZenv_varsr/ Zbase_cmdr �out�errr r r �run_gdbU s
r<