summaryrefslogtreecommitdiff
path: root/mediumlevelil.cpp
diff options
context:
space:
mode:
authorRusty Wagner <rusty@vector35.com>2017-08-23 01:04:47 -0400
committerRusty Wagner <rusty@vector35.com>2017-08-23 17:01:33 -0400
commit0d88336e22cf85a917729fe0f814c1e63736fca0 (patch)
tree246a7cf34d3f3919770cfbb2cf5f357adb1771e1 /mediumlevelil.cpp
parent7f3efa01f053e19549c480a770728085900c2131 (diff)
Added APIs for clobbered registers, global pointers, and function exit data flow info
Diffstat (limited to 'mediumlevelil.cpp')
-rw-r--r--mediumlevelil.cpp26
1 files changed, 19 insertions, 7 deletions
diff --git a/mediumlevelil.cpp b/mediumlevelil.cpp
index f978f681..04a7341f 100644
--- a/mediumlevelil.cpp
+++ b/mediumlevelil.cpp
@@ -302,19 +302,31 @@ void MediumLevelILFunction::Finalize()
void MediumLevelILFunction::GenerateSSAForm(bool analyzeConditionals, bool handleAliases,
- const set<Variable>& knownAliases)
+ const set<Variable>& knownNotAliases, const set<Variable>& knownAliases)
{
- BNVariable* vars = new BNVariable[knownAliases.size()];
+ BNVariable* knownNotAlias = new BNVariable[knownNotAliases.size()];
+ BNVariable* knownAlias = new BNVariable[knownAliases.size()];
+
size_t i = 0;
+ for (auto& j : knownNotAliases)
+ {
+ knownNotAlias[i].type = j.type;
+ knownNotAlias[i].index = j.index;
+ knownNotAlias[i].storage = j.storage;
+ }
+
+ i = 0;
for (auto& j : knownAliases)
{
- vars[i].type = j.type;
- vars[i].index = j.index;
- vars[i].storage = j.storage;
+ knownAlias[i].type = j.type;
+ knownAlias[i].index = j.index;
+ knownAlias[i].storage = j.storage;
}
- BNGenerateMediumLevelILSSAForm(m_object, analyzeConditionals, handleAliases, vars, knownAliases.size());
- delete[] vars;
+ BNGenerateMediumLevelILSSAForm(m_object, analyzeConditionals, handleAliases, knownNotAlias, knownNotAliases.size(),
+ knownAlias, knownAliases.size());
+ delete[] knownNotAlias;
+ delete[] knownAlias;
}