From 64797d7c23824a991fe6285a6a3bb0dcee2dd495 Mon Sep 17 00:00:00 2001 From: Peter LaFosse Date: Wed, 27 Oct 2021 07:33:08 -0400 Subject: Add IL class heirarchy graph report --- python/mediumlevelil.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'python/mediumlevelil.py') diff --git a/python/mediumlevelil.py b/python/mediumlevelil.py index 3a37bb6a..3ee5fc99 100644 --- a/python/mediumlevelil.py +++ b/python/mediumlevelil.py @@ -35,6 +35,7 @@ from . import flowgraph from . import variable from . import architecture from . import binaryview +from .interaction import show_graph_report from .commonil import (ILInstruction, Constant, BinaryOperation, UnaryOperation, Comparison, SSA, Phi, FloatingPoint, ControlFlow, Terminal, Call, Syscall, Tailcall, Return, Signed, Arithmetic, Carry, DoublePrecision, Memory, Load, Store, RegisterStack, SetVar) @@ -250,6 +251,14 @@ class MediumLevelILInstruction(ILInstruction): MediumLevelILOperation.MLIL_MEM_PHI: [("dest_memory", "int"), ("src_memory", "int_list")] } + @staticmethod + def show_mlil_hierarchy(): + graph = flowgraph.FlowGraph() + nodes = {} + for instruction in ILOperations.values(): + instruction.add_subgraph(graph, nodes) + show_graph_report("MLIL Class Hierarchy Graph", graph) + @classmethod def create(cls, func:'MediumLevelILFunction', expr_index:ExpressionIndex, instr_index:Optional[InstructionIndex]=None) -> 'MediumLevelILInstruction': assert func.arch is not None, "Attempted to create IL instruction with function missing an Architecture" @@ -816,7 +825,7 @@ class MediumLevelILBinaryBase(MediumLevelILInstruction, BinaryOperation): @dataclass(frozen=True, repr=False) -class MediumLevelILComparisonBase(MediumLevelILBinaryBase): +class MediumLevelILComparisonBase(MediumLevelILBinaryBase, Comparison): pass -- cgit v1.3.1