Enhanced the ObjC DynamicCheckerFunction to test for "object responds to selector" as well as
"object borked"...  Also made the error when the checker fails reflect this fact rather than
report a crash at 0x0.

Also a little cleanup:
- StopInfoMachException had a redundant copy of the description string.
- ThreadPlanCallFunction had a redundant copy of the thread, and had a 
copy of the process that it didn't really need.


git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@143419 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/source/Target/ThreadPlanCallUserExpression.cpp b/source/Target/ThreadPlanCallUserExpression.cpp
index dc27b2b..0499a7c 100644
--- a/source/Target/ThreadPlanCallUserExpression.cpp
+++ b/source/Target/ThreadPlanCallUserExpression.cpp
@@ -55,6 +55,20 @@
 
 void
 ThreadPlanCallUserExpression::GetDescription (Stream *s, lldb::DescriptionLevel level)
-{
+{        
     ThreadPlanCallFunction::GetDescription (s, level);
 }
+
+StopInfoSP
+ThreadPlanCallUserExpression::GetRealStopInfo()
+{
+    StopInfoSP stop_info_sp = ThreadPlanCallFunction::GetRealStopInfo();
+    lldb::addr_t addr = GetStopAddress();
+    DynamicCheckerFunctions *checkers = m_thread.GetProcess().GetDynamicCheckers();
+    StreamString s;
+    
+    if (checkers && checkers->DoCheckersExplainStop(addr, s))
+        stop_info_sp->SetDescription(s.GetData());
+
+    return stop_info_sp;
+}