summaryrefslogtreecommitdiff
path: root/binaryninjaapi.h
diff options
context:
space:
mode:
authorRusty Wagner <rusty@vector35.com>2018-01-18 20:15:04 -0500
committerRusty Wagner <rusty@vector35.com>2018-01-18 20:15:04 -0500
commit1228e32e300d62f5d76438e4500965d76edeca69 (patch)
tree00d6e341c5da65e4832e0e66428c7ac4a613d3c9 /binaryninjaapi.h
parent6430776b3de5ee6eb922a9356080ad07d5a92856 (diff)
Allow flag roles to be dependent on semantic class
Diffstat (limited to 'binaryninjaapi.h')
-rw-r--r--binaryninjaapi.h11
1 files changed, 6 insertions, 5 deletions
diff --git a/binaryninjaapi.h b/binaryninjaapi.h
index cbd51d05..b74fa971 100644
--- a/binaryninjaapi.h
+++ b/binaryninjaapi.h
@@ -1609,7 +1609,7 @@ namespace BinaryNinja
static uint32_t* GetAllFlagWriteTypesCallback(void* ctxt, size_t* count);
static uint32_t* GetAllSemanticFlagClassesCallback(void* ctxt, size_t* count);
static uint32_t* GetAllSemanticFlagGroupsCallback(void* ctxt, size_t* count);
- static BNFlagRole GetFlagRoleCallback(void* ctxt, uint32_t flag);
+ static BNFlagRole GetFlagRoleCallback(void* ctxt, uint32_t flag, uint32_t semClass);
static uint32_t* GetFlagsRequiredForFlagConditionCallback(void* ctxt, BNLowLevelILFlagCondition cond,
uint32_t semClass, size_t* count);
static uint32_t* GetFlagsRequiredForSemanticFlagGroupCallback(void* ctxt, uint32_t semGroup, size_t* count);
@@ -1687,7 +1687,7 @@ namespace BinaryNinja
virtual std::vector<uint32_t> GetAllFlagWriteTypes();
virtual std::vector<uint32_t> GetAllSemanticFlagClasses();
virtual std::vector<uint32_t> GetAllSemanticFlagGroups();
- virtual BNFlagRole GetFlagRole(uint32_t flag);
+ virtual BNFlagRole GetFlagRole(uint32_t flag, uint32_t semClass = 0);
virtual std::vector<uint32_t> GetFlagsRequiredForFlagCondition(BNLowLevelILFlagCondition cond,
uint32_t semClass = 0);
virtual std::vector<uint32_t> GetFlagsRequiredForSemanticFlagGroup(uint32_t semGroup);
@@ -1699,7 +1699,7 @@ namespace BinaryNinja
ExprId GetDefaultFlagWriteLowLevelIL(BNLowLevelILOperation op, size_t size, BNFlagRole role,
BNRegisterOrConstant* operands, size_t operandCount, LowLevelILFunction& il);
virtual ExprId GetFlagConditionLowLevelIL(BNLowLevelILFlagCondition cond, uint32_t semClass, LowLevelILFunction& il);
- ExprId GetDefaultFlagConditionLowLevelIL(BNLowLevelILFlagCondition cond, LowLevelILFunction& il);
+ ExprId GetDefaultFlagConditionLowLevelIL(BNLowLevelILFlagCondition cond, uint32_t semClass, LowLevelILFunction& il);
virtual ExprId GetSemanticFlagGroupLowLevelIL(uint32_t semGroup, LowLevelILFunction& il);
virtual BNRegisterInfo GetRegisterInfo(uint32_t reg);
virtual uint32_t GetStackPointerRegister();
@@ -1832,7 +1832,7 @@ namespace BinaryNinja
virtual std::vector<uint32_t> GetAllFlagWriteTypes() override;
virtual std::vector<uint32_t> GetAllSemanticFlagClasses() override;
virtual std::vector<uint32_t> GetAllSemanticFlagGroups() override;
- virtual BNFlagRole GetFlagRole(uint32_t flag) override;
+ virtual BNFlagRole GetFlagRole(uint32_t flag, uint32_t semClass = 0) override;
virtual std::vector<uint32_t> GetFlagsRequiredForFlagCondition(BNLowLevelILFlagCondition cond,
uint32_t semClass = 0) override;
virtual std::vector<uint32_t> GetFlagsRequiredForSemanticFlagGroup(uint32_t semGroup) override;
@@ -2526,7 +2526,8 @@ namespace BinaryNinja
const ILSourceLocation& loc = ILSourceLocation());
ExprId RegisterStackTopRelative(size_t size, uint32_t regStack, ExprId entry,
const ILSourceLocation& loc = ILSourceLocation());
- ExprId RegisterStackPop(size_t size, uint32_t regStack, const ILSourceLocation& loc = ILSourceLocation());
+ ExprId RegisterStackPop(size_t size, uint32_t regStack, uint32_t flags = 0,
+ const ILSourceLocation& loc = ILSourceLocation());
ExprId RegisterStackTopRelativeSSA(size_t size, const SSARegisterStack& regStack, ExprId entry,
const SSARegister& top, const ILSourceLocation& loc = ILSourceLocation());
ExprId RegisterStackAbsoluteSSA(size_t size, const SSARegisterStack& regStack, uint32_t reg,