summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSean Callanan <scallanan@apple.com>2010-11-12 01:37:02 +0000
committerSean Callanan <scallanan@apple.com>2010-11-12 01:37:02 +0000
commit36695cdecd62032733a8a3909983d51681a538bd (patch)
tree0a83d81f2a9cf7b26fa53993fac50364c41c4090
parent6df2cd3fbf83897b8392c4a0c34ee91c490a3e19 (diff)
downloadbcm5719-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.h7
-rw-r--r--lldb/include/lldb/Target/Thread.h7
-rw-r--r--lldb/include/lldb/Target/ThreadPlanCallFunction.h6
-rw-r--r--lldb/source/Target/Thread.cpp12
-rw-r--r--lldb/source/Target/ThreadPlanCallFunction.cpp75
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())
OpenPOWER on IntegriCloud