diff options
| author | Sean Callanan <scallanan@apple.com> | 2010-11-12 01:37:02 +0000 |
|---|---|---|
| committer | Sean Callanan <scallanan@apple.com> | 2010-11-12 01:37:02 +0000 |
| commit | 36695cdecd62032733a8a3909983d51681a538bd (patch) | |
| tree | 0a83d81f2a9cf7b26fa53993fac50364c41c4090 | |
| parent | 6df2cd3fbf83897b8392c4a0c34ee91c490a3e19 (diff) | |
| download | bcm5719-llvm-36695cdecd62032733a8a3909983d51681a538bd.tar.gz bcm5719-llvm-36695cdecd62032733a8a3909983d51681a538bd.zip | |
Excised a version of the low-level function calling
logic that supported calling functions with arbitrary
arguments. We use ClangFunction for this, and the
low-level logic is only required to support one or two
pointer arguments.
llvm-svn: 118871
| -rw-r--r-- | lldb/include/lldb/Target/ABI.h | 7 | ||||
| -rw-r--r-- | lldb/include/lldb/Target/Thread.h | 7 | ||||
| -rw-r--r-- | lldb/include/lldb/Target/ThreadPlanCallFunction.h | 6 | ||||
| -rw-r--r-- | lldb/source/Target/Thread.cpp | 12 | ||||
| -rw-r--r-- | lldb/source/Target/ThreadPlanCallFunction.cpp | 75 |
5 files changed, 0 insertions, 107 deletions
diff --git a/lldb/include/lldb/Target/ABI.h b/lldb/include/lldb/Target/ABI.h index 67697822637..ffce3da0519 100644 --- a/lldb/include/lldb/Target/ABI.h +++ b/lldb/include/lldb/Target/ABI.h @@ -38,13 +38,6 @@ public: lldb::addr_t *this_arg) const = 0; virtual bool - PrepareNormalCall (Thread &thread, - lldb::addr_t sp, - lldb::addr_t functionAddress, - lldb::addr_t returnAddress, - ValueList &args) const = 0; - - virtual bool GetArgumentValues (Thread &thread, ValueList &values) const = 0; diff --git a/lldb/include/lldb/Target/Thread.h b/lldb/include/lldb/Target/Thread.h index 1554b08c0fd..3f72909928a 100644 --- a/lldb/include/lldb/Target/Thread.h +++ b/lldb/include/lldb/Target/Thread.h @@ -492,13 +492,6 @@ public: lldb::addr_t arg, bool stop_other_threads, bool discard_on_error = false); - - virtual ThreadPlan * - QueueThreadPlanForCallFunction (bool abort_other_plans, - Address& function, - ValueList &args, - bool stop_other_threads, - bool discard_on_error = false); //------------------------------------------------------------------ // Thread Plan accessors: diff --git a/lldb/include/lldb/Target/ThreadPlanCallFunction.h b/lldb/include/lldb/Target/ThreadPlanCallFunction.h index 14a2440101e..1151dac9a7f 100644 --- a/lldb/include/lldb/Target/ThreadPlanCallFunction.h +++ b/lldb/include/lldb/Target/ThreadPlanCallFunction.h @@ -30,12 +30,6 @@ public: bool discard_on_error = true, lldb::addr_t *this_arg = 0); - ThreadPlanCallFunction (Thread &thread, - Address &function, - ValueList &args, - bool stop_other_threads, - bool discard_on_error = true); - virtual ~ThreadPlanCallFunction (); diff --git a/lldb/source/Target/Thread.cpp b/lldb/source/Target/Thread.cpp index 80434cf33f2..eccb700fd26 100644 --- a/lldb/source/Target/Thread.cpp +++ b/lldb/source/Target/Thread.cpp @@ -726,18 +726,6 @@ Thread::QueueThreadPlanForCallFunction (bool abort_other_plans, } ThreadPlan * -Thread::QueueThreadPlanForCallFunction (bool abort_other_plans, - Address& function, - ValueList &args, - bool stop_other_threads, - bool discard_on_error) -{ - ThreadPlanSP thread_plan_sp (new ThreadPlanCallFunction (*this, function, args, stop_other_threads, discard_on_error)); - QueueThreadPlan (thread_plan_sp, abort_other_plans); - return thread_plan_sp.get(); -} - -ThreadPlan * Thread::QueueThreadPlanForRunToAddress (bool abort_other_plans, Address &target_addr, bool stop_other_threads) diff --git a/lldb/source/Target/ThreadPlanCallFunction.cpp b/lldb/source/Target/ThreadPlanCallFunction.cpp index 9e29256b119..4407133f1eb 100644 --- a/lldb/source/Target/ThreadPlanCallFunction.cpp +++ b/lldb/source/Target/ThreadPlanCallFunction.cpp @@ -111,81 +111,6 @@ ThreadPlanCallFunction::ThreadPlanCallFunction (Thread &thread, m_valid = true; } -ThreadPlanCallFunction::ThreadPlanCallFunction (Thread &thread, - Address &function, - ValueList &args, - bool stop_other_threads, - bool discard_on_error) : - ThreadPlan (ThreadPlan::eKindCallFunction, "Call function plan", thread, eVoteNoOpinion, eVoteNoOpinion), - m_valid (false), - m_stop_other_threads (stop_other_threads), - m_arg_addr (0), - m_args (&args), - m_process (thread.GetProcess()), - m_thread (thread) -{ - - SetOkayToDiscard (discard_on_error); - - Process& process = thread.GetProcess(); - Target& target = process.GetTarget(); - const ABI *abi = process.GetABI(); - - if(!abi) - return; - - SetBreakpoints(); - - lldb::addr_t spBelowRedZone = thread.GetRegisterContext()->GetSP() - abi->GetRedZoneSize(); - - SymbolContextList contexts; - SymbolContext context; - ModuleSP executableModuleSP (target.GetExecutableModule()); - - if (!executableModuleSP || - !executableModuleSP->FindSymbolsWithNameAndType(ConstString ("start"), eSymbolTypeCode, contexts)) - return; - - contexts.GetContextAtIndex(0, context); - - m_start_addr = context.symbol->GetValue(); - lldb::addr_t StartLoadAddr = m_start_addr.GetLoadAddress(&target); - - if(!thread.SaveFrameZeroState(m_register_backup)) - return; - - m_function_addr = function; - lldb::addr_t FunctionLoadAddr = m_function_addr.GetLoadAddress(&target); - - if (!abi->PrepareNormalCall(thread, - spBelowRedZone, - FunctionLoadAddr, - StartLoadAddr, - *m_args)) - return; - - LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_STEP)); - - if (log) - { - RegisterContext *reg_ctx = m_thread.GetRegisterContext(); - - log->PutCString("Function call was set up. Register state was:"); - - for (uint32_t register_index = 0, num_registers = reg_ctx->GetRegisterCount(); - register_index < num_registers; - ++register_index) - { - const char *register_name = reg_ctx->GetRegisterName(register_index); - uint64_t register_value = reg_ctx->ReadRegisterAsUnsigned(register_index, LLDB_INVALID_ADDRESS); - - log->Printf(" %s = 0x%llx", register_name, register_value); - } - } - - m_valid = true; -} - ThreadPlanCallFunction::~ThreadPlanCallFunction () { if (m_valid && !IsPlanComplete()) |

