summaryrefslogtreecommitdiff
path: root/binaryninjaapi.h
diff options
context:
space:
mode:
authorRusty Wagner <rusty.wagner@gmail.com>2022-07-07 21:03:29 -0400
committerRusty Wagner <rusty.wagner@gmail.com>2022-08-10 15:17:53 -0400
commit390d5d27d4de6b7c9cb06b957a483bb2ab69f241 (patch)
tree556133db637166968a77d68daf7ff2160df79b40 /binaryninjaapi.h
parent4037000b6cb8a184ad098d0eff397518d7fe55b9 (diff)
Merge variables API/UI, variable liveness API for determining soundness of variable merges
Diffstat (limited to 'binaryninjaapi.h')
-rw-r--r--binaryninjaapi.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/binaryninjaapi.h b/binaryninjaapi.h
index 8af70be6..7c73d066 100644
--- a/binaryninjaapi.h
+++ b/binaryninjaapi.h
@@ -5736,6 +5736,8 @@ namespace BinaryNinja {
bool IsVariableUserDefinded(const Variable& var);
Confidence<Ref<Type>> GetVariableType(const Variable& var);
std::string GetVariableName(const Variable& var);
+ std::string GetVariableNameOrDefault(const Variable& var);
+ std::string GetLastSeenVariableNameOrDefault(const Variable& var);
void SetAutoIndirectBranches(
Architecture* sourceArch, uint64_t source, const std::vector<ArchAndAddr>& branches);
@@ -5880,6 +5882,10 @@ namespace BinaryNinja {
BNDeadStoreElimination GetVariableDeadStoreElimination(const Variable& var);
void SetVariableDeadStoreElimination(const Variable& var, BNDeadStoreElimination mode);
+ std::map<Variable, std::set<Variable>> GetMergedVariables();
+ void MergeVariables(const Variable& target, const std::set<Variable>& sources);
+ void UnmergeVariables(const Variable& target, const std::set<Variable>& sources);
+
uint64_t GetHighestAddress();
uint64_t GetLowestAddress();
std::vector<BNAddressRange> GetAddressRanges();
@@ -6755,6 +6761,8 @@ namespace BinaryNinja {
}
Ref<FlowGraph> CreateFunctionGraph(DisassemblySettings* settings = nullptr);
+
+ std::set<size_t> GetLiveInstructionsForVariable(const Variable& var, bool includeLastUse = true);
};
struct HighLevelILInstruction;