summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--binaryninjaapi.h1
-rw-r--r--binaryninjacore.h2
-rw-r--r--mediumlevelil.cpp6
-rw-r--r--python/mediumlevelil.py6
4 files changed, 15 insertions, 0 deletions
diff --git a/binaryninjaapi.h b/binaryninjaapi.h
index 8693baed..68243795 100644
--- a/binaryninjaapi.h
+++ b/binaryninjaapi.h
@@ -13038,6 +13038,7 @@ namespace BinaryNinja {
std::set<size_t> GetSSAMemoryUses(size_t version) const;
bool IsSSAVarLive(const SSAVariable& var) const;
bool IsSSAVarLiveAt(const SSAVariable& var, const size_t instr) const;
+ bool IsVarLiveAt(const Variable& var, const size_t instr) const;
std::set<size_t> GetVariableSSAVersions(const Variable& var) const;
std::set<size_t> GetVariableDefinitions(const Variable& var) const;
diff --git a/binaryninjacore.h b/binaryninjacore.h
index c4bdf715..c7f54bed 100644
--- a/binaryninjacore.h
+++ b/binaryninjacore.h
@@ -5582,6 +5582,8 @@ extern "C"
BNMediumLevelILFunction* func, const BNVariable* var, size_t version);
BINARYNINJACOREAPI bool BNIsMediumLevelILSSAVarLiveAt(
BNMediumLevelILFunction* func, const BNVariable* var, size_t version, const size_t instr);
+ BINARYNINJACOREAPI bool BNIsMediumLevelILVarLiveAt(
+ BNMediumLevelILFunction* func, const BNVariable* var, const size_t instr);
BINARYNINJACOREAPI BNVariable* BNGetMediumLevelILVariables(BNMediumLevelILFunction* func, size_t* count);
BINARYNINJACOREAPI BNVariable* BNGetMediumLevelILAliasedVariables(BNMediumLevelILFunction* func, size_t* count);
diff --git a/mediumlevelil.cpp b/mediumlevelil.cpp
index 29a27a2d..a0a0b9dd 100644
--- a/mediumlevelil.cpp
+++ b/mediumlevelil.cpp
@@ -510,6 +510,12 @@ bool MediumLevelILFunction::IsSSAVarLiveAt(const SSAVariable& var, const size_t
}
+bool MediumLevelILFunction::IsVarLiveAt(const Variable& var, const size_t instr) const
+{
+ return BNIsMediumLevelILVarLiveAt(m_object, &var, instr);
+}
+
+
set<size_t> MediumLevelILFunction::GetVariableSSAVersions(const Variable& var) const
{
size_t count;
diff --git a/python/mediumlevelil.py b/python/mediumlevelil.py
index e7909be4..fc9ba398 100644
--- a/python/mediumlevelil.py
+++ b/python/mediumlevelil.py
@@ -3677,6 +3677,12 @@ class MediumLevelILFunction:
"""
return core.BNIsMediumLevelILSSAVarLiveAt(self.handle, ssa_var.var.to_BNVariable(), ssa_var.version, instr)
+ def is_var_live_at(self, var: 'variable.Variable', instr: InstructionIndex) -> bool:
+ """
+ ``is_var_live_at`` determines if ``var`` is live at a given point in the function
+ """
+ return core.BNIsMediumLevelILVarLiveAt(self.handle, var.to_BNVariable(), instr)
+
def get_var_definitions(self, var: 'variable.Variable') -> List[MediumLevelILInstruction]:
count = ctypes.c_ulonglong()
var_data = var.to_BNVariable()