Commit 64199a31 authored by Gaurav Kukreja's avatar Gaurav Kukreja

Minor bug fixes at a lot of places

Signed-off-by: Gaurav Kukreja's avatarGaurav Kukreja <gaurav@gauravk.in>
parent d1dbeff0
......@@ -12,7 +12,7 @@ class Register:
self.isValid = False
def setValue(self, value):
self.valid = True
self.isValid = True
self.value = value
# List of names of General Purpose Registers
......
......@@ -414,6 +414,16 @@ def ignore_statement(line):
logging.debug("Goto Statement. : %s" % line)
return True
m = re_functionCallStatement.match(line)
if m is not None:
logging.debug("Function Call. : %s" % line)
return True
m = re_returnStatement.match(line)
if m is not None:
logging.debug("Function Call. : %s" % line)
return True
if line.isspace():
return True
......@@ -454,7 +464,7 @@ def parse_statement(line):
list_annotations = []
r = statement.parseString(line)
print r
# print r
return list_annotations
......
......@@ -47,18 +47,18 @@ def instrumentCache(listISCFileNames, listObjdumpFileNames, listBinaryFileNames)
for lineNumISC in range(blockISC.startLine, blockISC.endLine + 1):
lineISC = lc.getline(funcISC.fileName, lineNumISC)
print "%s:%d: %s" % (funcISC.fileName, lineNumISC, lineISC),
# lineAnnotations = parse_statement(lineISC)
# if lineAnnotations == None:
# continue
# for annotation in lineAnnotations:
# for lsInfo in blockLSInfo:
# if lsInfo.var != None and annotation[0] == lsInfo.var.name:
# print "Annotation :" + annotation[1]
listTerms = re_term.findall(lineISC)
for term in listTerms:
lineAnnotations = parse_statement(lineISC)
if lineAnnotations == None:
continue
for annotation in lineAnnotations:
for lsInfo in blockLSInfo:
if lsInfo.var != None and lsInfo.var.name == term:
print "term %s found!" % term
if lsInfo.var != None and annotation[0] == lsInfo.var.name:
print "Annotation :" + annotation[1]
# listTerms = re_term.findall(lineISC)
# for term in listTerms:
# for lsInfo in blockLSInfo:
# if lsInfo.var != None and lsInfo.var.name == term:
# print "term %s found!" % term
if __name__ == "__main__":
......
import linecache as lc
from collections import deque
import copy
from arm_isa_regex import *
from armEmulate import *
......@@ -169,6 +170,7 @@ def identifyLoadStore(listISCFunctions,
while queuePendingFunction:
func = queuePendingFunction.popleft()
logging.debug("")
logging.debug("Starting Emulation of Func %s" % func.name)
funcObj = find(lambda fn: fn.functionName == func.name, listObjdumpFunctions)
......@@ -211,13 +213,13 @@ def identifyLoadStore(listISCFunctions,
if funcInQueue is not None:
continue
else:
initRegState = armEmu.reg
initRegState = copy.deepcopy(armEmu.reg)
logging.debug("Adding func %s to queue!" % branchToFunction)
queuePendingFunction.append(FunctionInitState(branchToFunction,
initRegState))
continue
else:
logging.error("labelFunction in branch instruction could not be matched!")
logging.debug("Branch function does not have a label! (branch to same function)")
continue
'''
......
......@@ -18,6 +18,7 @@ from draw_cfg import draw_cfg
COND_EXEC_BLOCKLEN_THRESH = 6
app = None
outputPath = None
# listISCFileNames = []
# listObjdumpFileNames = []
......@@ -192,6 +193,9 @@ def mapping(cfgISC, blockIndISC, cfgObj, blockIndObj, mergedLevelsISC):
# succBlockISC.mapsTo.append(blockIndObj)
succBlockISC.mapISCTo(blockIndObj)
blockObj.mapsTo.append(listSuccBlocksISC[0])
### ...
blockObj.mapsTo.append(blockIndISC)
### ^^^
return 0
else:
# Mapping not found!
......@@ -357,6 +361,10 @@ def mapping(cfgISC, blockIndISC, cfgObj, blockIndObj, mergedLevelsISC):
# cfgISC.listBlocks[succ2BlockIndISC].mapsTo.append(blockIndObj)
cfgISC.listBlocks[succ2BlockIndISC].mapISCTo(blockIndObj)
blockObj.mapsTo.append(blockIndISC)
### ...
blockObj.mapsTo.append(succ1BlockIndISC)
blockObj.mapsTo.append(succ2BlockIndISC)
### ^^^
mappingStackISC.pop()
mappingStackISC.pop()
return 0
......@@ -385,6 +393,11 @@ def mapping(cfgISC, blockIndISC, cfgObj, blockIndObj, mergedLevelsISC):
cfgISC.listBlocks[succ2BlockIndISC].mapISCTo(blockIndObj)
cfgISC.listBlocks[succSucc1BlockIndISC].mapISCTo(blockIndObj)
blockObj.mapsTo.append(blockIndISC)
### ...
blockObj.mapsTo.append(succ1BlockIndISC)
blockObj.mapsTo.append(succ2BlockIndISC)
blockObj.mapsTo.append(succSucc1BlockIndISC)
### ^^^
mappingStackISC.pop()
mappingStackISC.pop()
mappingStackISC.pop()
......@@ -569,10 +582,19 @@ def match_cfg(listISCFileNames, listObjdumpFileNames, listBinaryFileNames):
printDebugMapCFG(listISCFunctions, listObjdumpFunctions, gdbMapping)
# for funcISC in listISCFunctions:
# funcObj = find(lambda fn: fn.functionName == funcISC.functionName, listObjdumpFunctions)
# # display_cfgs(app, funcISC.cfg, funcObj.cfg, "%s" % funcISC.functionName)
# psISCFileName = draw_cfg(funcISC, outputPath)
# psObjFileName = draw_cfg(funcObj, outputPath)
# call(args = ["evince", psISCFileName, psObjFileName])
return listISCFunctions, listObjdumpFunctions
if __name__ == "__main__":
global outputPath
app = QtGui.QApplication(sys.argv)
logging.basicConfig(level=logging.DEBUG)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment