Fetch the repository succeeded.
This action will force synchronization from liwentao/llvm-test-suite, which will overwrite any changes that you have made since you forked the repository, and can not be recovered!!!
Synchronous operation will process in the background and will refresh the page when finishing processing. Please be patient.
#!/usr/bin/python
from __future__ import print_function
import os
import sys
DBG_OUTPUT_FILE="Output/" + sys.argv[1] + ".dbg.out"
OPT_DBG_OUTPUT_FILE="Output/" + sys.argv[1] + ".dbg.opt.out"
LOG_FILE="Output/" + sys.argv[1] + ".log"
NATIVE_DBG_OUTPUT_FILE="Output/" + sys.argv[1] + ".native.dbg.out"
NATIVE_OPT_DBG_OUTPUT_FILE="Output/" + sys.argv[1] + ".native.dbg.opt.out"
NATIVE_LOG_FILE="Output/" + sys.argv[1] + ".native.log"
REPORT_FILE="Output/" + sys.argv[1] + ".dbg.report.txt"
class BreakPoint:
def __init__(self, bp_name):
self.name = bp_name
self.values = {}
self.missing_args = []
self.matching_args = []
self.notmatching_args = []
self.missing_bp = False
def setMissing(self):
self.missing_bp = True
def getArgCount(self):
return len(self.values)
def getMissingArgCount(self):
if self.missing_bp == True:
return len(self.values)
return len(self.missing_args)
def getMatchingArgCount(self):
if self.missing_bp == True:
return 0
return len(self.matching_args)
def getNotMatchingArgCount(self):
if self.missing_bp == True:
return 0
return len(self.notmatching_args)
def recordArgument(self, arg_name, value):
self.values[arg_name] = value
def __repr__(self):
print(self.name)
for k, v in self.values.items():
print(k, "=", v)
return ''
def compare_args(self, other, file):
myitems = self.values.items()
otheritems = list(other.values.items())
match = False
for i, my_item in enumerate(my_items):
if i >= len(otheritems):
match = True
self.missing_args.append(myitem[0])
elif cmp(myitem[1], otheritems[i][1]):
match = True
self.notmatching_args.append(myitem[0])
else:
self.matching_args.append(myitem[0])
self.print_list(self.matching_args, " Matching arguments ", file)
self.print_list(self.notmatching_args, " Not Matching arguments ", file)
self.print_list(self.missing_args, " Missing arguments ", file)
return match
def print_list(self, items, txt, pfile):
if len(items) == 0:
return
pfile.write(self.name)
pfile.write(txt)
for e in items:
pfile.write(e)
pfile.write(' ')
pfile.write('\n')
def read_input(filename, dict):
f = open(filename, "r")
lines = f.readlines()
for l in range(len(lines)):
c = lines[l].split()
if c[0] == "#Breakpoint":
bp = dict.get(c[2])
if bp is None:
bp = BreakPoint(c[1])
dict[c[2]] = bp
if c[0] == "#Argument":
bp = dict.get(c[2])
if bp is None:
bp = BreakPoint(c[1])
dict[c[2]] = bp
bp.recordArgument(c[3], c[4])
return
f1_breakpoints = {}
read_input(DBG_OUTPUT_FILE, f1_breakpoints)
f1_items = f1_breakpoints.items()
f2_breakpoints = {}
read_input(OPT_DBG_OUTPUT_FILE, f2_breakpoints)
f2_items = f2_breakpoints.items()
f = open(LOG_FILE, "w")
f.write("Log output\n")
for id, bp in f2_items:
bp1 = f1_breakpoints.get(id)
if bp1 is None:
bp.setMissing()
else:
bp1.compare_args(bp,f)
f.close()
nf1_breakpoints = {}
read_input(NATIVE_DBG_OUTPUT_FILE, nf1_breakpoints)
nf1_items = nf1_breakpoints.items()
nf2_breakpoints = {}
read_input(NATIVE_OPT_DBG_OUTPUT_FILE, nf2_breakpoints)
nf2_items = nf2_breakpoints.items()
nfl = open(NATIVE_LOG_FILE, "w")
for id, bp in nf2_items:
bp1 = nf1_breakpoints.get(id)
if bp1 is None:
bp.setMissing()
else:
bp1.compare_args(bp,nfl)
nfl.close()
f1_arg_count = 0
f1_matching_arg_count = 0
f1_notmatching_arg_count = 0
f1_missing_arg_count = 0
for f1_item in f1_items:
bp = f1_item[1]
f1_arg_count = f1_arg_count + bp.getArgCount()
f1_matching_arg_count = f1_matching_arg_count + bp.getMatchingArgCount()
f1_notmatching_arg_count = f1_notmatching_arg_count + bp.getNotMatchingArgCount()
f1_missing_arg_count = f1_missing_arg_count + bp.getMissingArgCount()
nf1_arg_count = 0
nf1_matching_arg_count = 0
nf1_notmatching_arg_count = 0
nf1_missing_arg_count = 0
for nf1_item in nf1_items:
bp = nf1_item[1]
nf1_arg_count = nf1_arg_count + bp.getArgCount()
nf1_matching_arg_count = nf1_matching_arg_count + bp.getMatchingArgCount()
nf1_notmatching_arg_count = nf1_notmatching_arg_count + bp.getNotMatchingArgCount()
nf1_missing_arg_count = nf1_missing_arg_count + bp.getMissingArgCount()
rf = open(REPORT_FILE, "w")
rf.write("---------------------------------------------------------------\n");
rf.write(">>> ========= '")
rf.write(sys.argv[1])
rf.write("'")
rf.write(" Program\n")
rf.write("---------------------------------------------------------------\n\n");
rf.write("GCC Total Arguments: ")
rf.write(str(nf1_arg_count))
rf.write("\n")
rf.write("GCC Matching Arguments: ")
rf.write(str(nf1_matching_arg_count))
rf.write("\n")
rf.write("GCC Not Matching Arguments: ")
rf.write(str(nf1_notmatching_arg_count))
rf.write("\n")
rf.write("GCC Missing Arguments: ")
rf.write(str(nf1_missing_arg_count))
rf.write("\n")
rf.write("LLVM Total Arguments: ")
rf.write(str(f1_arg_count))
rf.write("\n")
rf.write("LLVM Matching Arguments: ")
rf.write(str(f1_matching_arg_count))
rf.write("\n")
rf.write("LLVM Not Matching Arguments: ")
rf.write(str(f1_notmatching_arg_count))
rf.write("\n")
rf.write("LLVM Missing Arguments: ")
rf.write(str(f1_missing_arg_count))
rf.write("\n")
rf.close()
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。