diff options
author | Caroline Tice <ctice@apple.com> | 2010-12-03 18:46:09 +0000 |
---|---|---|
committer | Caroline Tice <ctice@apple.com> | 2010-12-03 18:46:09 +0000 |
commit | f8da863196a173ed90c627e468d42381bf48675d (patch) | |
tree | 34388cc707538d81088cb19416da67689f3db8f3 /lldb/source/Target/Process.cpp | |
parent | 6423c29e14fbde59ecee91d542f0cc3cab43b63a (diff) | |
download | bcm5719-llvm-f8da863196a173ed90c627e468d42381bf48675d.tar.gz bcm5719-llvm-f8da863196a173ed90c627e468d42381bf48675d.zip |
Add '-no-stdio' option to 'process launch' command, which causes the
inferior to be launched without setting up terminal stdin/stdout for it
(leaving the lldb command line accessible while the program is executing).
Also add a user settings variable, 'target.process.disable-stdio' to allow
the user to set this globally rather than having to use the command option
each time the process is launched.
llvm-svn: 120825
Diffstat (limited to 'lldb/source/Target/Process.cpp')
-rw-r--r-- | lldb/source/Target/Process.cpp | 29 |
1 files changed, 25 insertions, 4 deletions
diff --git a/lldb/source/Target/Process.cpp b/lldb/source/Target/Process.cpp index ab1ac819411..6e3ff89fe9d 100644 --- a/lldb/source/Target/Process.cpp +++ b/lldb/source/Target/Process.cpp @@ -2600,7 +2600,8 @@ ProcessInstanceSettings::ProcessInstanceSettings (UserSettingsController &owner, m_output_path (), m_error_path (), m_plugin (), - m_disable_aslr (true) + m_disable_aslr (true), + m_disable_stdio (false) { // CopyInstanceSettings is a pure virtual function in InstanceSettings; it therefore cannot be called // until the vtables for ProcessInstanceSettings are properly set up, i.e. AFTER all the initializers. @@ -2629,7 +2630,8 @@ ProcessInstanceSettings::ProcessInstanceSettings (const ProcessInstanceSettings m_output_path (rhs.m_output_path), m_error_path (rhs.m_error_path), m_plugin (rhs.m_plugin), - m_disable_aslr (rhs.m_disable_aslr) + m_disable_aslr (rhs.m_disable_aslr), + m_disable_stdio (rhs.m_disable_stdio) { if (m_instance_name != InstanceSettings::GetDefaultName()) { @@ -2655,6 +2657,7 @@ ProcessInstanceSettings::operator= (const ProcessInstanceSettings &rhs) m_error_path = rhs.m_error_path; m_plugin = rhs.m_plugin; m_disable_aslr = rhs.m_disable_aslr; + m_disable_stdio = rhs.m_disable_stdio; } return *this; @@ -2685,6 +2688,8 @@ ProcessInstanceSettings::UpdateInstanceSettingsVariable (const ConstString &var_ UserSettingsController::UpdateEnumVariable (entry.enum_values, (int *) &m_plugin, value, err); else if (var_name == DisableASLRVarName()) UserSettingsController::UpdateBooleanVariable (op, m_disable_aslr, value, err); + else if (var_name == DisableSTDIOVarName ()) + UserSettingsController::UpdateBooleanVariable (op, m_disable_stdio, value, err); } void @@ -2703,6 +2708,7 @@ ProcessInstanceSettings::CopyInstanceSettings (const lldb::InstanceSettingsSP &n m_error_path = new_process_settings->m_error_path; m_plugin = new_process_settings->m_plugin; m_disable_aslr = new_process_settings->m_disable_aslr; + m_disable_stdio = new_process_settings->m_disable_stdio; } bool @@ -2755,6 +2761,13 @@ ProcessInstanceSettings::GetInstanceSettingsValue (const SettingEntry &entry, else value.AppendString ("false"); } + else if (var_name == DisableSTDIOVarName()) + { + if (m_disable_stdio) + value.AppendString ("true"); + else + value.AppendString ("false"); + } else { if (err) @@ -2834,6 +2847,13 @@ ProcessInstanceSettings::DisableASLRVarName () return disable_aslr_var_name; } +const ConstString & +ProcessInstanceSettings::DisableSTDIOVarName () +{ + static ConstString disable_stdio_var_name ("disable-stdio"); + + return disable_stdio_var_name; +} //-------------------------------------------------- // SettingsController Variable Tables @@ -2864,8 +2884,9 @@ Process::SettingsController::instance_settings_table[] = { "input-path", eSetVarTypeString, "/dev/stdin", NULL, false, false, "The file/path to be used by the executable program for reading its input." }, { "output-path", eSetVarTypeString, "/dev/stdout", NULL, false, false, "The file/path to be used by the executable program for writing its output." }, { "error-path", eSetVarTypeString, "/dev/stderr", NULL, false, false, "The file/path to be used by the executable program for writings its error messages." }, - { "plugin", eSetVarTypeEnum, NULL , g_plugins, false, false, "The plugin to be used to run the process." }, - { "disable-aslr", eSetVarTypeBoolean, "true", NULL, false, false, "Disable Address Space Layout Randomization (ASLR)" }, + { "plugin", eSetVarTypeEnum, NULL , g_plugins, false, false, "The plugin to be used to run the process." }, + { "disable-aslr", eSetVarTypeBoolean, "true", NULL, false, false, "Disable Address Space Layout Randomization (ASLR)" }, + { "disable-stdio",eSetVarTypeBoolean, "false", NULL, false, false, "Disable stdin/stdout for process (e.g. for a GUI application)" }, { NULL, eSetVarTypeNone, NULL, NULL, 0, 0, NULL } }; |