summaryrefslogtreecommitdiffstats
path: root/lldb/source/Target/Process.cpp
diff options
context:
space:
mode:
authorJim Ingham <jingham@apple.com>2013-05-02 00:27:30 +0000
committerJim Ingham <jingham@apple.com>2013-05-02 00:27:30 +0000
commitacff8950158125374cde999738dac3b6b8348ff4 (patch)
tree8fa60ab21baab12386726b23df12677181aa22f1 /lldb/source/Target/Process.cpp
parentae4a5567e118a7819f990dad475e3297654bb9f3 (diff)
downloadbcm5719-llvm-acff8950158125374cde999738dac3b6b8348ff4.tar.gz
bcm5719-llvm-acff8950158125374cde999738dac3b6b8348ff4.zip
Recommitting r180831 with trivial fix - remember to return errors if you compute.
llvm-svn: 180898
Diffstat (limited to 'lldb/source/Target/Process.cpp')
-rw-r--r--lldb/source/Target/Process.cpp32
1 files changed, 28 insertions, 4 deletions
diff --git a/lldb/source/Target/Process.cpp b/lldb/source/Target/Process.cpp
index 8e1ab7a3f47..ce610b0c76a 100644
--- a/lldb/source/Target/Process.cpp
+++ b/lldb/source/Target/Process.cpp
@@ -101,6 +101,7 @@ g_properties[] =
{ "unwind-on-error-in-expressions", OptionValue::eTypeBoolean, true, true, NULL, NULL, "If true, errors in expression evaluation will unwind the stack back to the state before the call." },
{ "python-os-plugin-path", OptionValue::eTypeFileSpec, false, true, NULL, NULL, "A path to a python OS plug-in module file that contains a OperatingSystemPlugIn class." },
{ "stop-on-sharedlibrary-events" , OptionValue::eTypeBoolean, true, false, NULL, NULL, "If true, stop when a shared library is loaded or unloaded." },
+ { "detach-keeps-stopped" , OptionValue::eTypeBoolean, true, false, NULL, NULL, "If true, detach will attempt to keep the process stopped." },
{ NULL , OptionValue::eTypeInvalid, false, 0, NULL, NULL, NULL }
};
@@ -110,7 +111,8 @@ enum {
ePropertyIgnoreBreakpointsInExpressions,
ePropertyUnwindOnErrorInExpressions,
ePropertyPythonOSPluginPath,
- ePropertyStopOnSharedLibraryEvents
+ ePropertyStopOnSharedLibraryEvents,
+ ePropertyDetachKeepsStopped
};
ProcessProperties::ProcessProperties (bool is_global) :
@@ -213,6 +215,20 @@ ProcessProperties::SetStopOnSharedLibraryEvents (bool stop)
m_collection_sp->SetPropertyAtIndexAsBoolean(NULL, idx, stop);
}
+bool
+ProcessProperties::GetDetachKeepsStopped () const
+{
+ const uint32_t idx = ePropertyDetachKeepsStopped;
+ return m_collection_sp->GetPropertyAtIndexAsBoolean(NULL, idx, g_properties[idx].default_uint_value != 0);
+}
+
+void
+ProcessProperties::SetDetachKeepsStopped (bool stop)
+{
+ const uint32_t idx = ePropertyDetachKeepsStopped;
+ m_collection_sp->SetPropertyAtIndexAsBoolean(NULL, idx, stop);
+}
+
void
ProcessInstanceInfo::Dump (Stream &s, Platform *platform) const
{
@@ -1096,7 +1112,11 @@ Process::Finalize()
case eStateCrashed:
case eStateSuspended:
if (GetShouldDetach())
- Detach();
+ {
+ // FIXME: This will have to be a process setting:
+ bool keep_stopped = false;
+ Detach(keep_stopped);
+ }
else
Destroy();
break;
@@ -3437,7 +3457,7 @@ Process::HaltForDestroyOrDetach(lldb::EventSP &exit_event_sp)
}
Error
-Process::Detach ()
+Process::Detach (bool keep_stopped)
{
EventSP exit_event_sp;
Error error;
@@ -3464,12 +3484,16 @@ Process::Detach ()
}
}
- error = DoDetach();
+ error = DoDetach(keep_stopped);
if (error.Success())
{
DidDetach();
StopPrivateStateThread();
}
+ else
+ {
+ return error;
+ }
}
m_destroy_in_process = false;
OpenPOWER on IntegriCloud