summaryrefslogtreecommitdiff
path: root/python/mediumlevelil.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/mediumlevelil.py')
-rw-r--r--python/mediumlevelil.py23
1 files changed, 21 insertions, 2 deletions
diff --git a/python/mediumlevelil.py b/python/mediumlevelil.py
index 8f079bfe..0474fcea 100644
--- a/python/mediumlevelil.py
+++ b/python/mediumlevelil.py
@@ -3019,7 +3019,7 @@ class MediumLevelILFunction:
@property
def vars(self) -> List['variable.Variable']:
- """This gets just the MLIL variables - you may be interested in the union of `MediumLevelIlFunction.source_function.param_vars` for all the variables used in the function"""
+ """This gets just the MLIL variables - you may be interested in the union of `MediumLevelIlFunction.aliased_vars` and `MediumLevelIlFunction.source_function.param_vars` for all the variables used in the function"""
if self.source_function is None:
return []
@@ -3037,8 +3037,27 @@ class MediumLevelILFunction:
return []
@property
+ def aliased_vars(self) -> List["variable.Variable"]:
+ """This returns a list of Variables that are taken reference to and used elsewhere. You may also wish to consider `MediumLevelIlFunction.vars` and `MediumLevelIlFunction.source_function.param_vars`"""
+ if self.source_function is None:
+ return []
+
+ if self.il_form in [FunctionGraphType.MediumLevelILFunctionGraph, FunctionGraphType.MediumLevelILSSAFormFunctionGraph]:
+ count = ctypes.c_ulonglong()
+ core_variables = core.BNGetMediumLevelILAliasedVariables(self.handle, count)
+ assert core_variables is not None, "core.BNGetMediumLevelILAliasedVariables returned None"
+ try:
+ result = []
+ for var_i in range(count.value):
+ result.append(variable.Variable(self, core_variables[var_i].type, core_variables[var_i].index, core_variables[var_i].storage))
+ return result
+ finally:
+ core.BNFreeVariableList(core_variables)
+ return []
+
+ @property
def ssa_vars(self) -> List[SSAVariable]:
- """This gets just the MLIL SSA variables - you may be interested in the union of `MediumLevelIlFunction.source_function.param_vars` for all the variables used in the function"""
+ """This gets just the MLIL SSA variables - you may be interested in the union of `MediumLevelIlFunction.aliased_vars` and `MediumLevelIlFunction.source_function.param_vars` for all the variables used in the function"""
if self.source_function is None:
return []