diff options
| author | Glenn Smith <glenn@vector35.com> | 2021-01-14 22:07:19 -0500 |
|---|---|---|
| committer | Glenn Smith <glenn@vector35.com> | 2021-01-21 00:06:22 -0500 |
| commit | 0245b2c84223be520fdfce4e5afdabbdfbe95ee7 (patch) | |
| tree | f421696cdbc72ab4a62c2074acc1fc87312203e9 /callingconvention.cpp | |
| parent | f8feaa587bcba564ef96955a57121764a0fb0573 (diff) | |
Let calling conventions opt out of heuristics
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); |
