summaryrefslogtreecommitdiff
path: root/mediumlevelil.cpp
diff options
context:
space:
mode:
authorRusty Wagner <rusty@vector35.com>2017-07-14 18:49:26 -0400
committerRusty Wagner <rusty@vector35.com>2017-07-14 18:49:26 -0400
commit18083837fe452a91e457f02ed8be2abf5fc66877 (patch)
tree0a87e12569ca3a981906b16c9555e89892c49112 /mediumlevelil.cpp
parent35c65d909d1ec36a4a1bad7404c9f986e259f662 (diff)
Add API to get list of all definitions or uses of a variable
Diffstat (limited to 'mediumlevelil.cpp')
-rw-r--r--mediumlevelil.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/mediumlevelil.cpp b/mediumlevelil.cpp
index df78de2d..b4abaa72 100644
--- a/mediumlevelil.cpp
+++ b/mediumlevelil.cpp
@@ -313,6 +313,34 @@ set<size_t> MediumLevelILFunction::GetSSAMemoryUses(size_t version) const
}
+set<size_t> MediumLevelILFunction::GetVariableDefinitions(const Variable& var) const
+{
+ size_t count;
+ size_t* instrs = BNGetMediumLevelILVariableDefinitions(m_object, &var, &count);
+
+ set<size_t> result;
+ for (size_t i = 0; i < count; i++)
+ result.insert(instrs[i]);
+
+ BNFreeILInstructionList(instrs);
+ return result;
+}
+
+
+set<size_t> MediumLevelILFunction::GetVariableUses(const Variable& var) const
+{
+ size_t count;
+ size_t* instrs = BNGetMediumLevelILVariableUses(m_object, &var, &count);
+
+ set<size_t> result;
+ for (size_t i = 0; i < count; i++)
+ result.insert(instrs[i]);
+
+ BNFreeILInstructionList(instrs);
+ return result;
+}
+
+
RegisterValue MediumLevelILFunction::GetSSAVarValue(const Variable& var, size_t version)
{
BNRegisterValue value = BNGetMediumLevelILSSAVarValue(m_object, &var, version);