Fixed an issue where the UserSettingsControllers were being created out of
order and this was causing the target, process and thread trees to not be
available.

llvm-svn: 119784
diff --git a/lldb/source/Core/Debugger.cpp b/lldb/source/Core/Debugger.cpp
index 2353b92..ebdd802 100644
--- a/lldb/source/Core/Debugger.cpp
+++ b/lldb/source/Core/Debugger.cpp
@@ -64,12 +64,12 @@
 {
     if (g_shared_debugger_refcount == 0)
     {
-        lldb_private::Initialize();
         UserSettingsControllerSP &usc = GetSettingsController();
         usc.reset (new SettingsController);
         UserSettingsController::InitializeSettingsController (usc,
                                                               SettingsController::global_settings_table,
                                                               SettingsController::instance_settings_table);
+        lldb_private::Initialize();
     }
     g_shared_debugger_refcount++;
 
@@ -83,11 +83,11 @@
         g_shared_debugger_refcount--;
         if (g_shared_debugger_refcount == 0)
         {
+            lldb_private::WillTerminate();
+            lldb_private::Terminate();
             UserSettingsControllerSP &usc = GetSettingsController();
             UserSettingsController::FinalizeSettingsController (usc);
             usc.reset();
-            lldb_private::WillTerminate();
-            lldb_private::Terminate();
         }
     }
     // Clear our master list of debugger objects
@@ -165,7 +165,7 @@
 
 Debugger::Debugger () :
     UserID (g_unique_id++),
-    DebuggerInstanceSettings (*Debugger::GetSettingsController()),
+    DebuggerInstanceSettings (*GetSettingsController()),
     m_input_comm("debugger.input"),
     m_input_file (),
     m_output_file (),
@@ -1259,7 +1259,7 @@
 lldb::InstanceSettingsSP
 Debugger::SettingsController::CreateInstanceSettings (const char *instance_name)
 {
-    DebuggerInstanceSettings *new_settings = new DebuggerInstanceSettings (*Debugger::GetSettingsController(),
+    DebuggerInstanceSettings *new_settings = new DebuggerInstanceSettings (*GetSettingsController(),
                                                                            false, instance_name);
     lldb::InstanceSettingsSP new_settings_sp (new_settings);
     return new_settings_sp;
diff --git a/lldb/source/Core/UserSettingsController.cpp b/lldb/source/Core/UserSettingsController.cpp
index 8ec5551..8b652a9 100644
--- a/lldb/source/Core/UserSettingsController.cpp
+++ b/lldb/source/Core/UserSettingsController.cpp
@@ -71,7 +71,7 @@
 {
     const lldb::UserSettingsControllerSP &parent = controller_sp->GetParent ();
     if (parent)
-    parent->RegisterChild (controller_sp);
+        parent->RegisterChild (controller_sp);
 
     controller_sp->CreateSettingsVector (global_settings, true);
     controller_sp->CreateSettingsVector (instance_settings, false);
diff --git a/lldb/source/Target/Process.cpp b/lldb/source/Target/Process.cpp
index 0a758f6..e50ecf2 100644
--- a/lldb/source/Target/Process.cpp
+++ b/lldb/source/Target/Process.cpp
@@ -70,7 +70,7 @@
 Process::Process(Target &target, Listener &listener) :
     UserID (LLDB_INVALID_PROCESS_ID),
     Broadcaster ("lldb.process"),
-    ProcessInstanceSettings (*(Process::GetSettingsController().get())),
+    ProcessInstanceSettings (*GetSettingsController()),
     m_target (target),
     m_public_state (eStateUnloaded),
     m_private_state (eStateUnloaded),
@@ -2272,7 +2272,7 @@
         StreamString sstr;
         sstr.Printf ("%s", module_sp->GetFileSpec().GetFilename().AsCString());
                     
-	Process::GetSettingsController()->RenameInstanceSettings (GetInstanceName().AsCString(),
+        GetSettingsController()->RenameInstanceSettings (GetInstanceName().AsCString(),
                                                                   sstr.GetData());
     }
 }
@@ -2295,8 +2295,9 @@
 lldb::InstanceSettingsSP
 Process::SettingsController::CreateInstanceSettings (const char *instance_name)
 {
-    ProcessInstanceSettings *new_settings = new ProcessInstanceSettings (*(Process::GetSettingsController().get()),
-                                                                         false, instance_name);
+    ProcessInstanceSettings *new_settings = new ProcessInstanceSettings (*GetSettingsController(),
+                                                                         false, 
+                                                                         instance_name);
     lldb::InstanceSettingsSP new_settings_sp (new_settings);
     return new_settings_sp;
 }
@@ -2336,7 +2337,7 @@
 }
 
 ProcessInstanceSettings::ProcessInstanceSettings (const ProcessInstanceSettings &rhs) :
-    InstanceSettings (*(Process::GetSettingsController().get()), CreateInstanceName().AsCString()),
+    InstanceSettings (*Process::GetSettingsController(), CreateInstanceName().AsCString()),
     m_run_args (rhs.m_run_args),
     m_env_vars (rhs.m_env_vars),
     m_input_path (rhs.m_input_path),
diff --git a/lldb/source/Target/Target.cpp b/lldb/source/Target/Target.cpp
index da42e47..da66ee2 100644
--- a/lldb/source/Target/Target.cpp
+++ b/lldb/source/Target/Target.cpp
@@ -36,7 +36,7 @@
 //----------------------------------------------------------------------
 Target::Target(Debugger &debugger) :
     Broadcaster("lldb.target"),
-    TargetInstanceSettings (*(Target::GetSettingsController().get())),
+    TargetInstanceSettings (*GetSettingsController()),
     m_debugger (debugger),
     m_images(),
     m_section_load_list (),
@@ -797,7 +797,7 @@
 ArchSpec
 Target::GetDefaultArchitecture ()
 {
-    lldb::UserSettingsControllerSP settings_controller = Target::GetSettingsController();
+    lldb::UserSettingsControllerSP &settings_controller = GetSettingsController();
     lldb::SettableVariableType var_type;
     Error err;
     StringList result = settings_controller->GetVariable ("target.default-arch", var_type, "[]", err);
@@ -814,8 +814,11 @@
 Target::SetDefaultArchitecture (ArchSpec new_arch)
 {
     if (new_arch.IsValid())
-        Target::GetSettingsController ()->SetVariable ("target.default-arch", new_arch.AsCString(),
-                                                       lldb::eVarSetOperationAssign, false, "[]");
+        GetSettingsController ()->SetVariable ("target.default-arch", 
+                                               new_arch.AsCString(),
+                                               lldb::eVarSetOperationAssign, 
+                                               false, 
+                                               "[]");
 }
 
 Target *
@@ -848,8 +851,8 @@
         sstr.Printf ("%s_%s", 
                      module_sp->GetFileSpec().GetFilename().AsCString(), 
                      module_sp->GetArchitecture().AsCString());
-        Target::GetSettingsController()->RenameInstanceSettings (GetInstanceName().AsCString(),
-                                                                 sstr.GetData());
+        GetSettingsController()->RenameInstanceSettings (GetInstanceName().AsCString(),
+                                                         sstr.GetData());
     }
 }
 
@@ -878,8 +881,9 @@
 lldb::InstanceSettingsSP
 Target::SettingsController::CreateInstanceSettings (const char *instance_name)
 {
-    TargetInstanceSettings *new_settings = new TargetInstanceSettings (*(Target::GetSettingsController().get()),
-                                                                       false, instance_name);
+    TargetInstanceSettings *new_settings = new TargetInstanceSettings (*GetSettingsController(),
+                                                                       false, 
+                                                                       instance_name);
     lldb::InstanceSettingsSP new_settings_sp (new_settings);
     return new_settings_sp;
 }
@@ -958,7 +962,7 @@
 }
 
 TargetInstanceSettings::TargetInstanceSettings (const TargetInstanceSettings &rhs) :
-    InstanceSettings (*(Target::GetSettingsController().get()), CreateInstanceName().AsCString())
+    InstanceSettings (*Target::GetSettingsController(), CreateInstanceName().AsCString())
 {
     if (m_instance_name != InstanceSettings::GetDefaultName())
     {
diff --git a/lldb/source/Target/Thread.cpp b/lldb/source/Target/Thread.cpp
index 789f3a0..0db16fe 100644
--- a/lldb/source/Target/Thread.cpp
+++ b/lldb/source/Target/Thread.cpp
@@ -42,7 +42,7 @@
 
 Thread::Thread (Process &process, lldb::tid_t tid) :
     UserID (tid),
-    ThreadInstanceSettings (*(Thread::GetSettingsController().get())),
+    ThreadInstanceSettings (*GetSettingsController()),
     m_process (process),
     m_actual_stop_info_sp (),
     m_index_id (process.GetNextThreadIndexID ()),
@@ -1032,8 +1032,9 @@
 lldb::InstanceSettingsSP
 Thread::SettingsController::CreateInstanceSettings (const char *instance_name)
 {
-    ThreadInstanceSettings *new_settings = new ThreadInstanceSettings (*(Thread::GetSettingsController().get()),
-                                                                       false, instance_name);
+    ThreadInstanceSettings *new_settings = new ThreadInstanceSettings (*GetSettingsController(),
+                                                                       false, 
+                                                                       instance_name);
     lldb::InstanceSettingsSP new_settings_sp (new_settings);
     return new_settings_sp;
 }
@@ -1068,7 +1069,7 @@
 }
 
 ThreadInstanceSettings::ThreadInstanceSettings (const ThreadInstanceSettings &rhs) :
-    InstanceSettings (*(Thread::GetSettingsController().get()), CreateInstanceName().AsCString()),
+    InstanceSettings (*Thread::GetSettingsController(), CreateInstanceName().AsCString()),
     m_avoid_regexp_ap (),
     m_trace_enabled (rhs.m_trace_enabled)
 {