diff options
| -rw-r--r-- | binaryninjaapi.h | 1 | ||||
| -rw-r--r-- | binaryninjacore.h | 2 | ||||
| -rw-r--r-- | mediumlevelil.cpp | 6 | ||||
| -rw-r--r-- | python/mediumlevelil.py | 6 |
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() |
