Cleaned up the ABI::PrepareTrivialCall() function to take three argument
pointers:

        virtual bool
        PrepareTrivialCall (Thread &thread, 
                            lldb::addr_t sp,
                            lldb::addr_t functionAddress,
                            lldb::addr_t returnAddress, 
                            lldb::addr_t *arg1_ptr,
                            lldb::addr_t *arg2_ptr,
                            lldb::addr_t *arg3_ptr) const = 0;

Prior to this it was:

        virtual bool
        PrepareTrivialCall (Thread &thread, 
                            lldb::addr_t sp,
                            lldb::addr_t functionAddress,
                            lldb::addr_t returnAddress, 
                            lldb::addr_t arg,
                            lldb::addr_t *this_arg,
                            lldb::addr_t *cmd_arg) const = 0;

This was because the function that called this slowly added more features to
be able to call a C++ member function that might have a "this" pointer, and 
then later added "self + cmd" support for objective C. Cleaning this code up
and the code that calls it makes it easier to implement the functions for
new targets.

The MacOSX_arm::PrepareTrivialCall() is now filled in and ready for testing.



git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@131221 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/source/Target/ThreadPlanCallFunction.cpp b/source/Target/ThreadPlanCallFunction.cpp
index 934ac00..1da0e7b 100644
--- a/source/Target/ThreadPlanCallFunction.cpp
+++ b/source/Target/ThreadPlanCallFunction.cpp
@@ -110,14 +110,39 @@
     m_function_addr = function;
     lldb::addr_t FunctionLoadAddr = m_function_addr.GetLoadAddress(&target);
         
-    if (!abi->PrepareTrivialCall(thread, 
-                                 m_function_sp, 
-                                 FunctionLoadAddr, 
-                                 StartLoadAddr, 
-                                 m_arg_addr,
-                                 this_arg,
-                                 cmd_arg))
-        return;
+    if (this_arg && cmd_arg)
+    {
+        if (!abi->PrepareTrivialCall (thread, 
+                                      m_function_sp, 
+                                      FunctionLoadAddr, 
+                                      StartLoadAddr, 
+                                      this_arg,
+                                      cmd_arg,
+                                      &m_arg_addr))
+            return;
+    }
+    else if (this_arg)
+    {
+        if (!abi->PrepareTrivialCall (thread, 
+                                      m_function_sp, 
+                                      FunctionLoadAddr, 
+                                      StartLoadAddr, 
+                                      this_arg,
+                                      &m_arg_addr,
+                                      NULL))
+            return;
+    }
+    else
+    {
+        if (!abi->PrepareTrivialCall (thread, 
+                                      m_function_sp, 
+                                      FunctionLoadAddr, 
+                                      StartLoadAddr, 
+                                      &m_arg_addr,
+                                      NULL,
+                                      NULL))
+            return;
+    }
     
     ReportRegisterState ("Function call was set up.  Register state was:");