summaryrefslogtreecommitdiff
path: root/binaryninjaapi.h
diff options
context:
space:
mode:
authorBrian Potchik <brian@vector35.com>2018-04-25 17:26:39 -0400
committerBrian Potchik <brian@vector35.com>2018-04-25 17:26:39 -0400
commitf4f552491af8e456bcb14046096a0f93cc82b351 (patch)
tree980a1fd4382a6e881af497325a80d4f5a732789a /binaryninjaapi.h
parentc09ae6ce7bd652dbb6e1a4f73d5a8a51440ec1ff (diff)
Adding tailcall analysis to the core.
Diffstat (limited to 'binaryninjaapi.h')
-rw-r--r--binaryninjaapi.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/binaryninjaapi.h b/binaryninjaapi.h
index 05c8c4e3..7a13118f 100644
--- a/binaryninjaapi.h
+++ b/binaryninjaapi.h
@@ -2781,12 +2781,16 @@ namespace BinaryNinja
ExprId Call(ExprId dest, const ILSourceLocation& loc = ILSourceLocation());
ExprId CallStackAdjust(ExprId dest, size_t adjust, const std::map<uint32_t, int32_t>& regStackAdjust,
const ILSourceLocation& loc = ILSourceLocation());
+ ExprId TailCall(ExprId dest, const ILSourceLocation& loc = ILSourceLocation());
ExprId CallSSA(const std::vector<SSARegister>& output, ExprId dest, const std::vector<ExprId>& params,
const SSARegister& stack, size_t newMemoryVer, size_t prevMemoryVer,
const ILSourceLocation& loc = ILSourceLocation());
ExprId SystemCallSSA(const std::vector<SSARegister>& output, const std::vector<ExprId>& params,
const SSARegister& stack, size_t newMemoryVer, size_t prevMemoryVer,
const ILSourceLocation& loc = ILSourceLocation());
+ ExprId TailCallSSA(const std::vector<SSARegister>& output, ExprId dest, const std::vector<ExprId>& params,
+ const SSARegister& stack, size_t newMemoryVer, size_t prevMemoryVer,
+ const ILSourceLocation& loc = ILSourceLocation());
ExprId Return(size_t dest, const ILSourceLocation& loc = ILSourceLocation());
ExprId NoReturn(const ILSourceLocation& loc = ILSourceLocation());
ExprId FlagCondition(BNLowLevelILFlagCondition cond, uint32_t semClass = 0,
@@ -3100,6 +3104,10 @@ namespace BinaryNinja
const ILSourceLocation& loc = ILSourceLocation());
ExprId SyscallUntyped(const std::vector<Variable>& output, const std::vector<Variable>& params,
ExprId stack, const ILSourceLocation& loc = ILSourceLocation());
+ ExprId TailCall(const std::vector<Variable>& output, ExprId dest, const std::vector<ExprId>& params,
+ const ILSourceLocation& loc = ILSourceLocation());
+ ExprId TailCallUntyped(const std::vector<Variable>& output, ExprId dest, const std::vector<Variable>& params,
+ ExprId stack, const ILSourceLocation& loc = ILSourceLocation());
ExprId CallSSA(const std::vector<SSAVariable>& output, ExprId dest, const std::vector<ExprId>& params,
size_t newMemVersion, size_t prevMemVersion, const ILSourceLocation& loc = ILSourceLocation());
ExprId CallUntypedSSA(const std::vector<SSAVariable>& output, ExprId dest,
@@ -3110,6 +3118,11 @@ namespace BinaryNinja
ExprId SyscallUntypedSSA(const std::vector<SSAVariable>& output,
const std::vector<SSAVariable>& params, size_t newMemVersion, size_t prevMemVersion,
ExprId stack, const ILSourceLocation& loc = ILSourceLocation());
+ ExprId TailCallSSA(const std::vector<SSAVariable>& output, ExprId dest, const std::vector<ExprId>& params,
+ size_t newMemVersion, size_t prevMemVersion, const ILSourceLocation& loc = ILSourceLocation());
+ ExprId TailCallUntypedSSA(const std::vector<SSAVariable>& output, ExprId dest,
+ const std::vector<SSAVariable>& params, size_t newMemVersion, size_t prevMemVersion,
+ ExprId stack, const ILSourceLocation& loc = ILSourceLocation());
ExprId Return(const std::vector<ExprId>& sources, const ILSourceLocation& loc = ILSourceLocation());
ExprId NoReturn(const ILSourceLocation& loc = ILSourceLocation());
ExprId CompareEqual(size_t size, ExprId left, ExprId right,