Add the ability to set breakpoints with conditions, commands, etc,
in the "dummy-target".  The dummy target breakpoints prime all future
targets.  Breakpoints set before any target is created (e.g. breakpoints
in ~/.lldbinit) automatically get set in the dummy target.  You can also
list, add & delete breakpoints from the dummy target using the "-D" flag,
which is supported by most of the breakpoint commands.

This removes a long-standing wart in lldb...

<rdar://problem/10881487>

llvm-svn: 223565
diff --git a/lldb/source/Target/LanguageRuntime.cpp b/lldb/source/Target/LanguageRuntime.cpp
index 9d48d8b..32faa17 100644
--- a/lldb/source/Target/LanguageRuntime.cpp
+++ b/lldb/source/Target/LanguageRuntime.cpp
@@ -10,6 +10,7 @@
 #include "lldb/Target/LanguageRuntime.h"
 #include "lldb/Target/Target.h"
 #include "lldb/Core/PluginManager.h"
+#include "lldb/Core/SearchFilter.h"
 
 using namespace lldb;
 using namespace lldb_private;
@@ -19,15 +20,20 @@
 {
 public:
     ExceptionSearchFilter (const lldb::TargetSP &target_sp,
-                           lldb::LanguageType language) :
+                           lldb::LanguageType language,
+                           bool update_module_list = true) :
         SearchFilter (target_sp),
         m_language (language),
         m_language_runtime (NULL),
         m_filter_sp ()
     {
-        UpdateModuleListIfNeeded ();
+        if (update_module_list)
+            UpdateModuleListIfNeeded ();
     }
-    
+
+    virtual
+    ~ExceptionSearchFilter() {};
+
     virtual bool
     ModulePasses (const lldb::ModuleSP &module_sp)
     {
@@ -68,6 +74,12 @@
     LanguageRuntime *m_language_runtime;
     SearchFilterSP m_filter_sp;
 
+    SearchFilterSP
+    DoCopyForBreakpoint(Breakpoint &breakpoint) override
+    {
+        return SearchFilterSP(new ExceptionSearchFilter(TargetSP(), m_language, false));
+    }
+
     void
     UpdateModuleListIfNeeded ()
     {
@@ -174,6 +186,12 @@
         return V->getResolverID() == BreakpointResolver::ExceptionResolver;
     }
 protected:
+    BreakpointResolverSP
+    CopyForBreakpoint (Breakpoint &breakpoint) override
+    {
+        return BreakpointResolverSP(new ExceptionBreakpointResolver(m_language, m_catch_bp, m_throw_bp));
+    }
+
     bool
     SetActualResolver()
     {