aboutsummaryrefslogtreecommitdiff
path: root/lldb
diff options
context:
space:
mode:
authorJonas Devlieghere <jonas@devlieghere.com>2020-06-25 09:51:55 -0700
committerJonas Devlieghere <jonas@devlieghere.com>2020-06-25 09:55:46 -0700
commit842283652eb89e7c207ecfdac5e546472332f02b (patch)
tree99ac33ddd87880faa65a31ba926fbf151b088823 /lldb
parent79d7e9c7d07a7ba4a65f4579bf3a8756c757e634 (diff)
downloadllvm-842283652eb89e7c207ecfdac5e546472332f02b.zip
llvm-842283652eb89e7c207ecfdac5e546472332f02b.tar.gz
llvm-842283652eb89e7c207ecfdac5e546472332f02b.tar.bz2
[lldb/ScriptInterpreter] Let the IORedirect factory handle IO being disabled.
Have one factory method that decides how to initialize the ScriptInterpreterIORedirect object based on whether IO is enabled or disabled.
Diffstat (limited to 'lldb')
-rw-r--r--lldb/include/lldb/Interpreter/ScriptInterpreter.h10
-rw-r--r--lldb/source/Interpreter/ScriptInterpreter.cpp14
-rw-r--r--lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp6
3 files changed, 12 insertions, 18 deletions
diff --git a/lldb/include/lldb/Interpreter/ScriptInterpreter.h b/lldb/include/lldb/Interpreter/ScriptInterpreter.h
index 8086886..491923e 100644
--- a/lldb/include/lldb/Interpreter/ScriptInterpreter.h
+++ b/lldb/include/lldb/Interpreter/ScriptInterpreter.h
@@ -36,13 +36,11 @@ private:
class ScriptInterpreterIORedirect {
public:
- /// Create an IO redirect with /dev/null as input, output and error file.
- static llvm::Expected<std::unique_ptr<ScriptInterpreterIORedirect>> Create();
-
- /// Create an IO redirect that redirects the output to the command return
- /// object if set or to the debugger otherwise.
+ /// Create an IO redirect. If IO is enabled, this will redirects the output
+ /// to the command return object if set or to the debugger otherwise. If IO
+ /// is disabled, it will redirect all IO to /dev/null.
static llvm::Expected<std::unique_ptr<ScriptInterpreterIORedirect>>
- Create(Debugger &debugger, CommandReturnObject *result);
+ Create(bool enable_io, Debugger &debugger, CommandReturnObject *result);
~ScriptInterpreterIORedirect();
diff --git a/lldb/source/Interpreter/ScriptInterpreter.cpp b/lldb/source/Interpreter/ScriptInterpreter.cpp
index d46a104..967c228 100644
--- a/lldb/source/Interpreter/ScriptInterpreter.cpp
+++ b/lldb/source/Interpreter/ScriptInterpreter.cpp
@@ -119,7 +119,12 @@ static void ReadThreadBytesReceived(void *baton, const void *src,
}
llvm::Expected<std::unique_ptr<ScriptInterpreterIORedirect>>
-ScriptInterpreterIORedirect::Create() {
+ScriptInterpreterIORedirect::Create(bool enable_io, Debugger &debugger,
+ CommandReturnObject *result) {
+ if (enable_io)
+ return std::unique_ptr<ScriptInterpreterIORedirect>(
+ new ScriptInterpreterIORedirect(debugger, result));
+
auto nullin = FileSystem::Instance().Open(FileSpec(FileSystem::DEV_NULL),
File::eOpenOptionRead);
if (!nullin)
@@ -134,13 +139,6 @@ ScriptInterpreterIORedirect::Create() {
new ScriptInterpreterIORedirect(std::move(*nullin), std::move(*nullout)));
}
-llvm::Expected<std::unique_ptr<ScriptInterpreterIORedirect>>
-ScriptInterpreterIORedirect::Create(Debugger &debugger,
- CommandReturnObject *result) {
- return std::unique_ptr<ScriptInterpreterIORedirect>(
- new ScriptInterpreterIORedirect(debugger, result));
-}
-
ScriptInterpreterIORedirect::ScriptInterpreterIORedirect(
std::unique_ptr<File> input, std::unique_ptr<File> output)
: m_input_file_sp(std::move(input)),
diff --git a/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp b/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
index 40ce7d9..d7f2fc6 100644
--- a/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
+++ b/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
@@ -912,10 +912,8 @@ bool ScriptInterpreterPythonImpl::ExecuteOneLine(
// we use the following more complicated method to pass the command string
// directly down to Python.
llvm::Expected<std::unique_ptr<ScriptInterpreterIORedirect>>
- io_redirect_or_error =
- options.GetEnableIO()
- ? ScriptInterpreterIORedirect::Create(m_debugger, result)
- : ScriptInterpreterIORedirect::Create();
+ io_redirect_or_error = ScriptInterpreterIORedirect::Create(
+ options.GetEnableIO(), m_debugger, result);
if (!io_redirect_or_error) {
if (result)
result->AppendErrorWithFormatv(