diff options
Diffstat (limited to 'callingconvention.cpp')
| -rw-r--r-- | callingconvention.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/callingconvention.cpp b/callingconvention.cpp index 4693b988..b6354381 100644 --- a/callingconvention.cpp +++ b/callingconvention.cpp @@ -43,6 +43,7 @@ CallingConvention::CallingConvention(Architecture* arch, const string& name) cc.areArgumentRegistersSharedIndex = AreArgumentRegistersSharedIndexCallback; cc.isStackReservedForArgumentRegisters = IsStackReservedForArgumentRegistersCallback; cc.isStackAdjustedOnReturn = IsStackAdjustedOnReturnCallback; + cc.isEligibleForHeuristics = IsEligibleForHeuristicsCallback; cc.getIntegerReturnValueRegister = GetIntegerReturnValueRegisterCallback; cc.getHighIntegerReturnValueRegister = GetHighIntegerReturnValueRegisterCallback; cc.getFloatReturnValueRegister = GetFloatReturnValueRegisterCallback; @@ -144,6 +145,13 @@ bool CallingConvention::IsStackAdjustedOnReturnCallback(void* ctxt) } +bool CallingConvention::IsEligibleForHeuristicsCallback(void* ctxt) +{ + CallingConvention* cc = (CallingConvention*)ctxt; + return cc->IsEligibleForHeuristics(); +} + + uint32_t CallingConvention::GetIntegerReturnValueRegisterCallback(void* ctxt) { CallingConvention* cc = (CallingConvention*)ctxt; @@ -284,6 +292,12 @@ bool CallingConvention::IsStackAdjustedOnReturn() } +bool CallingConvention::IsEligibleForHeuristics() +{ + return true; +} + + uint32_t CallingConvention::GetHighIntegerReturnValueRegister() { return BN_INVALID_REGISTER; @@ -407,6 +421,12 @@ bool CoreCallingConvention::IsStackAdjustedOnReturn() } +bool CoreCallingConvention::IsEligibleForHeuristics() +{ + return BNIsEligibleForHeuristics(m_object); +} + + uint32_t CoreCallingConvention::GetIntegerReturnValueRegister() { return BNGetIntegerReturnValueRegister(m_object); |
