summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Potchik <brian@vector35.com>2021-01-20 10:55:19 -0500
committerBrian Potchik <brian@vector35.com>2021-01-20 10:55:19 -0500
commit8f9004fa3cba785ec67909e9f96498b00086a3a7 (patch)
tree79fec1ee88ed2fb3935454c9d60e3f3199f5af6b
parentf1166563f54d28a745eb781dfe27c13a099bb7d9 (diff)
Expand instruction mapping unit tests.
-rw-r--r--suite/testcommon.py24
1 files changed, 20 insertions, 4 deletions
diff --git a/suite/testcommon.py b/suite/testcommon.py
index 091f967c..a4ca8969 100644
--- a/suite/testcommon.py
+++ b/suite/testcommon.py
@@ -190,7 +190,10 @@ class BinaryViewTestBuilder(Builder):
for func in self.bv.functions:
for bb in func.low_level_il.basic_blocks:
for ins in bb:
- retinfo.append("Function: {:x} Instruction: {:x} MLIL: {}".format(func.start, ins.address, str(ins.medium_level_il)))
+ retinfo.append("Function: {:x} Instruction: {:x} LLIL->MLIL: {}".format(func.start, ins.address, str(ins.mlil)))
+ retinfo.append("Function: {:x} Instruction: {:x} LLIL->MLILS: {}".format(func.start, ins.address, str(ins.mlils)))
+ # TODO figure out the LLIL->HLIL instability
+ #retinfo.append("Function: {:x} Instruction: {:x} LLIL->HLIL: {}".format(func.start, ins.address, str(ins.hlil)))
retinfo.append("Function: {:x} Instruction: {:x} Mapped MLIL: {}".format(func.start, ins.address, str(ins.mapped_medium_level_il)))
retinfo.append("Function: {:x} Instruction: {:x} Value: {}".format(func.start, ins.address, str(ins.value)))
retinfo.append("Function: {:x} Instruction: {:x} Possible Values: {}".format(func.start, ins.address, str(ins.possible_values)))
@@ -242,6 +245,10 @@ class BinaryViewTestBuilder(Builder):
retinfo.append("Function: {:x} Instruction: {:x} SSA instruction index: {}".format(func.source_function.start, ins.address, str(func.get_ssa_instruction_index(tempind))))
retinfo.append("Function: {:x} Instruction: {:x} MLIL instruction index: {}".format(func.source_function.start, ins.address, str(func.get_medium_level_il_instruction_index(ins.instr_index))))
retinfo.append("Function: {:x} Instruction: {:x} Mapped MLIL instruction index: {}".format(func.source_function.start, ins.address, str(func.get_mapped_medium_level_il_instruction_index(ins.instr_index))))
+ retinfo.append("Function: {:x} Instruction: {:x} LLIL_SSA->MLIL: {}".format(func.source_function.start, ins.address, str(ins.mlil)))
+ retinfo.append("Function: {:x} Instruction: {:x} LLIL_SSA->MLILS: {}".format(func.source_function.start, ins.address, str(ins.mlils)))
+ # TODO figure out the LLIL_SSA->HLIL instability
+ #retinfo.append("Function: {:x} Instruction: {:x} LLIL_SSA->HLIL: {}".format(func.source_function.start, ins.address, str(ins.hlil)))
return fixOutput(retinfo)
def test_med_il_instructions(self):
@@ -251,7 +258,10 @@ class BinaryViewTestBuilder(Builder):
for bb in func.mlil.basic_blocks:
for ins in bb:
retinfo.append("Function: {:x} Instruction: {:x} Expression type: {}".format(func.start, ins.address, str(ins.expr_type)))
- retinfo.append("Function: {:x} Instruction: {:x} LLIL: {}".format(func.start, ins.address, str(ins.low_level_il)))
+ retinfo.append("Function: {:x} Instruction: {:x} MLIL->LLIL: {}".format(func.start, ins.address, str(ins.llil)))
+ retinfo.append("Function: {:x} Instruction: {:x} MLIL->LLILS: {}".format(func.start, ins.address, str(ins.llils)))
+ # TODO figure out the MLIL->HLIL instability
+ #retinfo.append("Function: {:x} Instruction: {:x} MLIL->HLIL: {}".format(func.start, ins.address, str(ins.hlil)))
retinfo.append("Function: {:x} Instruction: {:x} Value: {}".format(func.start, ins.address, str(ins.value)))
retinfo.append("Function: {:x} Instruction: {:x} Possible values: {}".format(func.start, ins.address, str(ins.possible_values)))
retinfo.append("Function: {:x} Instruction: {:x} Branch dependence: {}".format(func.start, ins.address, str(sorted(ins.branch_dependence.items()))))
@@ -332,12 +342,14 @@ class BinaryViewTestBuilder(Builder):
for func in self.bv.functions:
for llilbb in func.llil_basic_blocks:
retinfo.append("Function: {:x} LLIL basic block: {}".format(func.start, str(llilbb)))
- for llilins in func.llil_instructions:
+ for llilins in func.llil.instructions:
retinfo.append("Function: {:x} Instruction: {:x} LLIL instruction: {}".format(func.start, llilins.address, str(llilins)))
for mlilbb in func.mlil_basic_blocks:
retinfo.append("Function: {:x} MLIL basic block: {}".format(func.start, str(mlilbb)))
- for mlilins in func.mlil_instructions:
+ for mlilins in func.mlil.instructions:
retinfo.append("Function: {:x} Instruction: {:x} MLIL instruction: {}".format(func.start, mlilins.address, str(mlilins)))
+ for hlilins in func.hlil.instructions:
+ retinfo.append("Function: {:x} Instruction: {:x} HLIL instruction: {}".format(func.start, hlilins.address, str(hlilins)))
for ins in func.instructions:
retinfo.append("Function: {:x} Instruction: {}: {}".format(func.start, hex(ins[1]), ''.join([str(i) for i in ins[0]])))
return fixOutput(retinfo)
@@ -348,6 +360,10 @@ class BinaryViewTestBuilder(Builder):
for func in self.bv.functions:
for line in func.hlil.root.lines:
retinfo.append("Function: {:x} HLIL line: {}".format(func.start, str(line)))
+ for hlilins in func.hlil.instructions:
+ retinfo.append("Function: {:x} Instruction: {:x} HLIL->LLIL instruction: {}".format(func.start, hlilins.address, str(hlilins.llil)))
+ retinfo.append("Function: {:x} Instruction: {:x} HLIL->MLIL instruction: {}".format(func.start, hlilins.address, str(hlilins.mlil)))
+ retinfo.append("Function: {:x} Instruction: {:x} HLIL->MLILS instruction: {}".format(func.start, hlilins.address, str(hlilins.mlils)))
return fixOutput(retinfo)
def test_functions_attributes(self):