diff options
Diffstat (limited to 'tools/perf/scripts/python/exported-sql-viewer.py')
| -rwxr-xr-x | tools/perf/scripts/python/exported-sql-viewer.py | 101 | 
1 files changed, 10 insertions, 91 deletions
| diff --git a/tools/perf/scripts/python/exported-sql-viewer.py b/tools/perf/scripts/python/exported-sql-viewer.py index 7daa8bb70a5a..13f2d8a81610 100755 --- a/tools/perf/scripts/python/exported-sql-viewer.py +++ b/tools/perf/scripts/python/exported-sql-viewer.py @@ -91,6 +91,11 @@  from __future__ import print_function  import sys +# Only change warnings if the python -W option was not used +if not sys.warnoptions: +	import warnings +	# PySide2 causes deprecation warnings, ignore them. +	warnings.filterwarnings("ignore", category=DeprecationWarning)  import argparse  import weakref  import threading @@ -108,6 +113,7 @@ import os  import random  import copy  import math +from libxed import LibXED  pyside_version_1 = True  if not "--pyside-version-1" in sys.argv: @@ -125,8 +131,9 @@ if pyside_version_1:  	from PySide.QtGui import *  	from PySide.QtSql import * -from decimal import * -from ctypes import * +from decimal import Decimal, ROUND_HALF_UP +from ctypes import CDLL, Structure, create_string_buffer, addressof, sizeof, \ +		   c_void_p, c_bool, c_byte, c_char, c_int, c_uint, c_longlong, c_ulonglong  from multiprocessing import Process, Array, Value, Event  # xrange is range in Python3 @@ -3868,7 +3875,7 @@ def CopyTableCellsToClipboard(view, as_csv=False, with_hdr=False):  	if with_hdr:  		model = indexes[0].model()  		for col in range(min_col, max_col + 1): -			val = model.headerData(col, Qt.Horizontal) +			val = model.headerData(col, Qt.Horizontal, Qt.DisplayRole)  			if as_csv:  				text += sep + ToCSValue(val)  				sep = "," @@ -4741,94 +4748,6 @@ class MainWindow(QMainWindow):  		dialog = AboutDialog(self.glb, self)  		dialog.exec_() -# XED Disassembler - -class xed_state_t(Structure): - -	_fields_ = [ -		("mode", c_int), -		("width", c_int) -	] - -class XEDInstruction(): - -	def __init__(self, libxed): -		# Current xed_decoded_inst_t structure is 192 bytes. Use 512 to allow for future expansion -		xedd_t = c_byte * 512 -		self.xedd = xedd_t() -		self.xedp = addressof(self.xedd) -		libxed.xed_decoded_inst_zero(self.xedp) -		self.state = xed_state_t() -		self.statep = addressof(self.state) -		# Buffer for disassembled instruction text -		self.buffer = create_string_buffer(256) -		self.bufferp = addressof(self.buffer) - -class LibXED(): - -	def __init__(self): -		try: -			self.libxed = CDLL("libxed.so") -		except: -			self.libxed = None -		if not self.libxed: -			self.libxed = CDLL("/usr/local/lib/libxed.so") - -		self.xed_tables_init = self.libxed.xed_tables_init -		self.xed_tables_init.restype = None -		self.xed_tables_init.argtypes = [] - -		self.xed_decoded_inst_zero = self.libxed.xed_decoded_inst_zero -		self.xed_decoded_inst_zero.restype = None -		self.xed_decoded_inst_zero.argtypes = [ c_void_p ] - -		self.xed_operand_values_set_mode = self.libxed.xed_operand_values_set_mode -		self.xed_operand_values_set_mode.restype = None -		self.xed_operand_values_set_mode.argtypes = [ c_void_p, c_void_p ] - -		self.xed_decoded_inst_zero_keep_mode = self.libxed.xed_decoded_inst_zero_keep_mode -		self.xed_decoded_inst_zero_keep_mode.restype = None -		self.xed_decoded_inst_zero_keep_mode.argtypes = [ c_void_p ] - -		self.xed_decode = self.libxed.xed_decode -		self.xed_decode.restype = c_int -		self.xed_decode.argtypes = [ c_void_p, c_void_p, c_uint ] - -		self.xed_format_context = self.libxed.xed_format_context -		self.xed_format_context.restype = c_uint -		self.xed_format_context.argtypes = [ c_int, c_void_p, c_void_p, c_int, c_ulonglong, c_void_p, c_void_p ] - -		self.xed_tables_init() - -	def Instruction(self): -		return XEDInstruction(self) - -	def SetMode(self, inst, mode): -		if mode: -			inst.state.mode = 4 # 32-bit -			inst.state.width = 4 # 4 bytes -		else: -			inst.state.mode = 1 # 64-bit -			inst.state.width = 8 # 8 bytes -		self.xed_operand_values_set_mode(inst.xedp, inst.statep) - -	def DisassembleOne(self, inst, bytes_ptr, bytes_cnt, ip): -		self.xed_decoded_inst_zero_keep_mode(inst.xedp) -		err = self.xed_decode(inst.xedp, bytes_ptr, bytes_cnt) -		if err: -			return 0, "" -		# Use AT&T mode (2), alternative is Intel (3) -		ok = self.xed_format_context(2, inst.xedp, inst.bufferp, sizeof(inst.buffer), ip, 0, 0) -		if not ok: -			return 0, "" -		if sys.version_info[0] == 2: -			result = inst.buffer.value -		else: -			result = inst.buffer.value.decode() -		# Return instruction length and the disassembled instruction text -		# For now, assume the length is in byte 166 -		return inst.xedd[166], result -  def TryOpen(file_name):  	try:  		return open(file_name, "rb") | 
