summaryrefslogtreecommitdiff
path: root/callingconvention.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'callingconvention.cpp')
-rw-r--r--callingconvention.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/callingconvention.cpp b/callingconvention.cpp
index b6354381..33fe45ff 100644
--- a/callingconvention.cpp
+++ b/callingconvention.cpp
@@ -41,6 +41,7 @@ CallingConvention::CallingConvention(Architecture* arch, const string& name)
cc.getFloatArgumentRegisters = GetFloatArgumentRegistersCallback;
cc.freeRegisterList = FreeRegisterListCallback;
cc.areArgumentRegistersSharedIndex = AreArgumentRegistersSharedIndexCallback;
+ cc.areArgumentRegistersUsedForVarArgs = AreArgumentRegistersUsedForVarArgsCallback;
cc.isStackReservedForArgumentRegisters = IsStackReservedForArgumentRegistersCallback;
cc.isStackAdjustedOnReturn = IsStackAdjustedOnReturnCallback;
cc.isEligibleForHeuristics = IsEligibleForHeuristicsCallback;
@@ -131,6 +132,13 @@ bool CallingConvention::AreArgumentRegistersSharedIndexCallback(void* ctxt)
}
+bool CallingConvention::AreArgumentRegistersUsedForVarArgsCallback(void* ctxt)
+{
+ CallingConvention* cc = (CallingConvention*)ctxt;
+ return cc->AreArgumentRegistersUsedForVarArgs();
+}
+
+
bool CallingConvention::IsStackReservedForArgumentRegistersCallback(void* ctxt)
{
CallingConvention* cc = (CallingConvention*)ctxt;
@@ -280,6 +288,12 @@ bool CallingConvention::AreArgumentRegistersSharedIndex()
}
+bool CallingConvention::AreArgumentRegistersUsedForVarArgs()
+{
+ return true;
+}
+
+
bool CallingConvention::IsStackReservedForArgumentRegisters()
{
return false;
@@ -409,6 +423,12 @@ bool CoreCallingConvention::AreArgumentRegistersSharedIndex()
}
+bool CoreCallingConvention::AreArgumentRegistersUsedForVarArgs()
+{
+ return BNAreArgumentRegistersUsedForVarArgs(m_object);
+}
+
+
bool CoreCallingConvention::IsStackReservedForArgumentRegisters()
{
return BNIsStackReservedForArgumentRegisters(m_object);