From ce5d365c0ba8d24682f29236b3a9d3ba1ca1a3a3 Mon Sep 17 00:00:00 2001 From: Peter LaFosse Date: Tue, 28 Mar 2023 10:49:20 -0400 Subject: Add visitors for llil and hlil Implement detailed_operands for both, add visitors for both. Improve consistency of type_name field of detailed_operands in MLIL --- python/mediumlevelil.py | 45 +++++++++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 22 deletions(-) (limited to 'python/mediumlevelil.py') diff --git a/python/mediumlevelil.py b/python/mediumlevelil.py index 89eefea3..94311f13 100644 --- a/python/mediumlevelil.py +++ b/python/mediumlevelil.py @@ -1236,13 +1236,14 @@ class MediumLevelILCallOutput(MediumLevelILInstruction): def dest(self) -> List[variable.Variable]: return self._get_var_list(0, 1) + @property + def detailed_operands(self) -> List[Tuple[str, MediumLevelILOperandType, str]]: + return [("dest", self.dest, "List[Variable]")] + @property def vars_written(self) -> List[variable.Variable]: return self.dest - @property - def detailed_operands(self) -> List[Tuple[str, MediumLevelILOperandType, str]]: - return [("dest", self.dest, "List[Variable]")] @dataclass(frozen=True, repr=False, eq=False) @@ -1724,7 +1725,7 @@ class MediumLevelILSyscall(MediumLevelILInstruction, Syscall): @property def detailed_operands(self) -> List[Tuple[str, MediumLevelILOperandType, str]]: return [ - ('output', self.output, 'List[variable.Variable]'), + ('output', self.output, 'List[Variable]'), ('params', self.params, 'List[MediumLevelILInstruction]'), ] @@ -1793,10 +1794,6 @@ class MediumLevelILCallOutputSsa(MediumLevelILInstruction, SSA): def dest(self) -> List[SSAVariable]: return self._get_var_ssa_list(1, 2) - @property - def vars_written(self) -> List[SSAVariable]: - return self.dest - @property def detailed_operands(self) -> List[Tuple[str, MediumLevelILOperandType, str]]: return [ @@ -1804,6 +1801,10 @@ class MediumLevelILCallOutputSsa(MediumLevelILInstruction, SSA): ('dest', self.dest, 'List[SSAVariable]'), ] + @property + def vars_written(self) -> List[SSAVariable]: + return self.dest + @dataclass(frozen=True, repr=False, eq=False) class MediumLevelILCallParamSsa(MediumLevelILInstruction, SSA): @@ -2041,8 +2042,8 @@ class MediumLevelILSyscallUntyped(MediumLevelILCallBase, Syscall): @property def detailed_operands(self) -> List[Tuple[str, MediumLevelILOperandType, str]]: return [ - ('output', self.output, 'List[variable.Variable]'), - ('params', self.params, 'List[variable.Variable]'), + ('output', self.output, 'List[Variable]'), + ('params', self.params, 'List[Variable]'), ('stack', self.stack, 'MediumLevelILInstruction'), ] @@ -2064,8 +2065,8 @@ class MediumLevelILIntrinsic(MediumLevelILInstruction, Intrinsic): @property def detailed_operands(self) -> List[Tuple[str, MediumLevelILOperandType, str]]: return [ - ('output', self.output, 'List[variable.Variable]'), - ('intrinsic', self.intrinsic, "'lowlevelil.ILIntrinsic'"), + ('output', self.output, 'List[Variable]'), + ('intrinsic', self.intrinsic, "ILIntrinsic"), ('params', self.params, 'List[MediumLevelILInstruction]'), ] @@ -2099,7 +2100,7 @@ class MediumLevelILIntrinsicSsa(MediumLevelILInstruction, SSA): def detailed_operands(self) -> List[Tuple[str, MediumLevelILOperandType, str]]: return [ ('output', self.output, 'List[SSAVariable]'), - ('intrinsic', self.intrinsic, "lowlevelil.ILIntrinsic"), + ('intrinsic', self.intrinsic, 'ILIntrinsic'), ('params', self.params, 'List[MediumLevelILInstruction]'), ] @@ -2334,7 +2335,7 @@ class MediumLevelILSetVarField(MediumLevelILInstruction, SetVar): @property def detailed_operands(self) -> List[Tuple[str, MediumLevelILOperandType, str]]: return [ - ('dest', self.dest, 'variable.Variable'), + ('dest', self.dest, 'Variable'), ('offset', self.offset, 'int'), ('src', self.src, 'MediumLevelILInstruction'), ] @@ -2357,8 +2358,8 @@ class MediumLevelILSetVarSplit(MediumLevelILInstruction, SetVar): @property def detailed_operands(self) -> List[Tuple[str, MediumLevelILOperandType, str]]: return [ - ('high', self.high, 'variable.Variable'), - ('low', self.low, 'variable.Variable'), + ('high', self.high, 'Variable'), + ('low', self.low, 'Variable'), ('src', self.src, 'MediumLevelILInstruction'), ] @@ -2428,7 +2429,7 @@ class MediumLevelILCall(MediumLevelILCallBase, Localcall): @property def detailed_operands(self) -> List[Tuple[str, MediumLevelILOperandType, str]]: return [ - ('output', self.output, 'List[variable.Variable]'), + ('output', self.output, 'List[Variable]'), ('dest', self.dest, 'MediumLevelILInstruction'), ('params', self.params, 'List[MediumLevelILInstruction]'), ] @@ -2482,9 +2483,9 @@ class MediumLevelILTailcallUntyped(MediumLevelILCallBase, Tailcall): @property def detailed_operands(self) -> List[Tuple[str, MediumLevelILOperandType, str]]: return [ - ('output', self.output, 'List[variable.Variable]'), + ('output', self.output, 'List[Variable]'), ('dest', self.dest, 'MediumLevelILInstruction'), - ('params', self.params, 'List[variable.Variable]'), + ('params', self.params, 'List[Variable]'), ('stack', self.stack, 'MediumLevelILInstruction'), ] @@ -2591,7 +2592,7 @@ class MediumLevelILTailcall(MediumLevelILCallBase, Tailcall): @property def detailed_operands(self) -> List[Tuple[str, MediumLevelILOperandType, str]]: return [ - ('output', self.output, 'List[variable.Variable]'), + ('output', self.output, 'List[Variable]'), ('dest', self.dest, 'MediumLevelILInstruction'), ('params', self.params, 'List[MediumLevelILInstruction]'), ] @@ -2732,9 +2733,9 @@ class MediumLevelILCallUntyped(MediumLevelILCallBase, Localcall): @property def detailed_operands(self) -> List[Tuple[str, MediumLevelILOperandType, str]]: return [ - ('output', self.output, 'List[variable.Variable]'), + ('output', self.output, 'List[Variable]'), ('dest', self.dest, 'MediumLevelILInstruction'), - ('params', self.params, 'List[variable.Variable]'), + ('params', self.params, 'List[Variable]'), ('stack', self.stack, 'MediumLevelILInstruction'), ] -- cgit v1.3.1