summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--python/highlevelil.py8
-rw-r--r--python/lowlevelil.py32
-rw-r--r--python/mediumlevelil.py23
3 files changed, 37 insertions, 26 deletions
diff --git a/python/highlevelil.py b/python/highlevelil.py
index 60359a20..976ebc79 100644
--- a/python/highlevelil.py
+++ b/python/highlevelil.py
@@ -79,8 +79,8 @@ class HighLevelILOperationAndSize:
def __repr__(self):
if self.size == 0:
- return f"<{self.operation.name}>"
- return f"<{self.operation.name} {self.size}>"
+ return f"<HighLevelILOperationAndSize: {self.operation.name}>"
+ return f"<HighLevelILOperationAndSize: {self.operation.name} {self.size}>"
@dataclass
@@ -89,7 +89,7 @@ class GotoLabel:
id: int
def __repr__(self):
- return f"<label: {self.name}>"
+ return f"<GotoLabel: {self.name}>"
def __str__(self):
return self.name
@@ -351,7 +351,7 @@ class HighLevelILInstruction(BaseILInstruction):
first_line += token.text
if len(list(lines)) > 1:
continuation = "..."
- return f"<{self.operation.name}: {first_line}{continuation}>"
+ return f"<{self.__class__.__name__}: {first_line}{continuation}>"
def __eq__(self, other: 'HighLevelILInstruction'):
if not isinstance(other, HighLevelILInstruction):
diff --git a/python/lowlevelil.py b/python/lowlevelil.py
index 8f04600f..99000250 100644
--- a/python/lowlevelil.py
+++ b/python/lowlevelil.py
@@ -75,7 +75,7 @@ class ILRegister:
index: 'architecture.RegisterIndex'
def __repr__(self):
- return f"<reg {self.name}>"
+ return f"<ILRegister: {self.name}>"
def __str__(self):
return self.name
@@ -114,7 +114,7 @@ class ILRegisterStack:
index: 'architecture.RegisterStackIndex'
def __repr__(self):
- return f"<reg-stack {self.name}>"
+ return f"<ILRegisterStack: {self.name}>"
def __str__(self):
return self.name
@@ -137,7 +137,7 @@ class ILFlag:
index: 'architecture.FlagIndex'
def __repr__(self):
- return f"<flag {self.name}>"
+ return f"<ILFlag: {self.name}>"
def __str__(self):
return self.name
@@ -163,7 +163,7 @@ class ILSemanticFlagClass:
index: 'architecture.SemanticClassIndex'
def __repr__(self):
- return self.name
+ return f"<ILSemanticFlagClass: {self.name}>"
def __str__(self):
return self.name
@@ -182,7 +182,7 @@ class ILSemanticFlagGroup:
index: 'architecture.SemanticGroupIndex'
def __repr__(self):
- return self.name
+ return f"<ILSemanticFlagGroup: {self.name}>"
def __str__(self):
return self.name
@@ -201,7 +201,7 @@ class ILIntrinsic:
index: 'architecture.IntrinsicIndex'
def __repr__(self):
- return self.name
+ return f"<ILIntrinsic: {self.name} - {self.arch}>"
def __str__(self):
return self.name
@@ -227,7 +227,7 @@ class SSARegister:
version: int
def __repr__(self):
- return f"<ssa {self.reg} version {self.version}>"
+ return f"<SSARegister: {self.reg} version {self.version}>"
@dataclass(frozen=True)
@@ -236,7 +236,7 @@ class SSARegisterStack:
version: int
def __repr__(self):
- return f"<ssa {self.reg_stack} version {self.version}>"
+ return f"<SSARegisterStack: {self.reg_stack} version {self.version}>"
@dataclass(frozen=True)
@@ -245,7 +245,7 @@ class SSAFlag:
version: int
def __repr__(self):
- return f"<ssa {self.flag} version {self.version}>"
+ return f"<SSAFlag {self.flag} version {self.version}>"
@dataclass(frozen=True)
@@ -254,7 +254,7 @@ class SSARegisterOrFlag:
version: int
def __repr__(self):
- return f"<ssa {self.reg_or_flag} version {self.version}>"
+ return f"<SSARegisterOrFlag: {self.reg_or_flag} version {self.version}>"
@dataclass(frozen=True)
@@ -264,8 +264,8 @@ class LowLevelILOperationAndSize:
def __repr__(self):
if self.size == 0:
- return f"<{self.operation.name}>"
- return f"<{self.operation.name} {self.size}>"
+ return f"<LowLevelILOperationAndSize: {self.operation.name}>"
+ return f"<LowLevelILOperationAndSize: {self.operation.name} {self.size}>"
@dataclass(frozen=True)
@@ -492,7 +492,7 @@ class LowLevelILInstruction(BaseILInstruction):
return result
def __repr__(self):
- return f"<llil: {self}>"
+ return f"<{self.__class__.__name__}: {self}>"
def __eq__(self, other: 'LowLevelILInstruction') -> bool:
if not isinstance(other, LowLevelILInstruction):
@@ -3072,11 +3072,11 @@ class LowLevelILFunction:
def __repr__(self):
if self.source_function is not None and self.source_function.arch is not None:
- return f"<llil func: {self.source_function.arch.name}@{self.source_function.start:#x}>"
+ return f"<{self.__class__.__name__}: {self.source_function.arch.name}@{self.source_function.start:#x}>"
elif self.source_function is not None:
- return f"<llil func: {self.source_function.start:#x}>"
+ return f"<{self.__class__.__name__}: {self.source_function.start:#x}>"
else:
- return "<llil func: anonymous>"
+ return f"<{self.__class__.__name__}: anonymous>"
def __len__(self):
return int(core.BNGetLowLevelILInstructionCount(self.handle))
diff --git a/python/mediumlevelil.py b/python/mediumlevelil.py
index df5ae4a0..e781b1da 100644
--- a/python/mediumlevelil.py
+++ b/python/mediumlevelil.py
@@ -67,7 +67,7 @@ class SSAVariable:
version: int
def __repr__(self):
- return f"<ssa {self.var} version {self.version}>"
+ return f"<SSAVariable: {self.var} version {self.version}>"
@property
def name(self) -> str:
@@ -102,8 +102,8 @@ class MediumLevelILOperationAndSize:
def __repr__(self):
if self.size == 0:
- return f"<{self.operation.name}>"
- return f"<{self.operation.name} {self.size}>"
+ return f"<MediumLevelILOperationAndSize: {self.operation.name}>"
+ return f"<MediumLevelILOperationAndSize: {self.operation.name} {self.size}>"
@dataclass(frozen=True)
@@ -364,7 +364,7 @@ class MediumLevelILInstruction(BaseILInstruction):
return result
def __repr__(self):
- return f"<mlil: {self}>"
+ return f"<{self.__class__.__name__}: {self}>"
def __eq__(self, other: 'MediumLevelILInstruction') -> bool:
if not isinstance(other, MediumLevelILInstruction):
@@ -479,6 +479,11 @@ class MediumLevelILInstruction(BaseILInstruction):
@property
def tokens(self) -> TokenList:
"""MLIL tokens (read-only)"""
+
+ # Special case for the helper instructions which don't have tokens
+ if isinstance(self, (MediumLevelILCallParam, MediumLevelILCallParamSsa)):
+ return []
+
count = ctypes.c_ulonglong()
tokens = ctypes.POINTER(core.BNInstructionTextToken)()
assert self.function.arch is not None, f"type(self.function): {type(self.function)} "
@@ -1246,6 +1251,9 @@ class MediumLevelILCallOutput(MediumLevelILInstruction):
@dataclass(frozen=True, repr=False, eq=False)
class MediumLevelILCallParam(MediumLevelILInstruction):
+ def __repr__(self):
+ return f"<MediumLevelILCallParam: {self.src}>"
+
@property
def src(self) -> List[variable.Variable]:
return self._get_var_list(0, 1)
@@ -1806,6 +1814,9 @@ class MediumLevelILCallOutputSsa(MediumLevelILInstruction, SSA):
@dataclass(frozen=True, repr=False, eq=False)
class MediumLevelILCallParamSsa(MediumLevelILInstruction, SSA):
+ def __repr__(self):
+ return f"<MediumLevelILCallParamSsa: {self.src}>"
+
@property
def src_memory(self) -> int:
return self._get_int(0)
@@ -2990,9 +3001,9 @@ class MediumLevelILFunction:
def __repr__(self):
arch = self.source_function.arch
if arch:
- return f"<mlil func: {arch.name}@{self.source_function.start:#x}>"
+ return f"<MediumLevelILFunction: {arch.name}@{self.source_function.start:#x}>"
else:
- return f"<mlil func: {self.source_function.start:#x}>"
+ return f"<MediumLevelILFunction: {self.source_function.start:#x}>"
def __len__(self):
return int(core.BNGetMediumLevelILInstructionCount(self.handle))