I have eliminated RTTI from LLDB!
Also added a shell script build phase that fixes the headers in
LLDB.framework.
git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@105899 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/source/Target/Thread.cpp b/source/Target/Thread.cpp
index 2f852cc..068cc39 100644
--- a/source/Target/Thread.cpp
+++ b/source/Target/Thread.cpp
@@ -419,9 +419,15 @@
// Note, don't assume there's a ThreadPlanStepOverBreakpoint, the target may not require anything
// special to step over a breakpoint.
- ThreadPlan *cur_plan = GetCurrentPlan();
- ThreadPlanStepOverBreakpoint *step_over_bp = dynamic_cast<ThreadPlanStepOverBreakpoint *> (cur_plan);
- if (step_over_bp == NULL)
+ // TODO: Jim Ingham -- this is the only place left that does RTTI in
+ // all of LLDB. I am adding a hack right now to let us compile
+ // without RTTI, but we will need to look at and fix this. Right
+ // now it will always push the breakpoint thread plan which is
+ // probably wrong. We will need to work around this.
+
+// ThreadPlan *cur_plan = GetCurrentPlan();
+// ThreadPlanStepOverBreakpoint *step_over_bp = dynamic_cast<ThreadPlanStepOverBreakpoint *> (cur_plan);
+// if (step_over_bp == NULL)
{
ThreadPlanSP step_bp_plan_sp (new ThreadPlanStepOverBreakpoint (*this));
@@ -861,11 +867,26 @@
}
ThreadPlan *
-Thread::QueueThreadPlanForStepRange (bool abort_other_plans, StepType type, const AddressRange &range, const SymbolContext &addr_context, lldb::RunMode stop_other_threads)
+Thread::QueueThreadPlanForStepRange
+(
+ bool abort_other_plans,
+ StepType type,
+ const AddressRange &range,
+ const SymbolContext &addr_context,
+ lldb::RunMode stop_other_threads,
+ bool avoid_code_without_debug_info
+)
{
ThreadPlanSP thread_plan_sp;
if (type == eStepTypeInto)
- thread_plan_sp.reset (new ThreadPlanStepInRange (*this, range, addr_context, stop_other_threads));
+ {
+ ThreadPlanStepInRange *plan = new ThreadPlanStepInRange (*this, range, addr_context, stop_other_threads);
+ if (avoid_code_without_debug_info)
+ plan->GetFlags().Set (ThreadPlanShouldStopHere::eAvoidNoDebug);
+ else
+ plan->GetFlags().Clear (ThreadPlanShouldStopHere::eAvoidNoDebug);
+ thread_plan_sp.reset (plan);
+ }
else
thread_plan_sp.reset (new ThreadPlanStepOverRange (*this, range, addr_context, stop_other_threads));