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)
{