aboutsummaryrefslogtreecommitdiff
path: root/lldb/source/Commands/CommandObjectCommands.cpp
diff options
context:
space:
mode:
authorJonas Devlieghere <jonas@devlieghere.com>2021-07-09 09:23:54 -0700
committerJonas Devlieghere <jonas@devlieghere.com>2021-07-09 10:05:39 -0700
commitf9517353959b4ef5c706e4356b56aeb9e0087584 (patch)
tree5960dcb4a254fe27fcd73f78c2aca32efd83464a /lldb/source/Commands/CommandObjectCommands.cpp
parent0ac7532cc17aebf1b93d95142c5edec7e66ebad0 (diff)
downloadllvm-f9517353959b4ef5c706e4356b56aeb9e0087584.zip
llvm-f9517353959b4ef5c706e4356b56aeb9e0087584.tar.gz
llvm-f9517353959b4ef5c706e4356b56aeb9e0087584.tar.bz2
[lldb] Add the ability to silently import scripted commands
Add the ability to silence command script import. The motivation for this change is being able to add command script import -s lldb.macosx.crashlog to your ~/.lldbinit without it printing the following message at the beginning of every debug session. "malloc_info", "ptr_refs", "cstr_refs", "find_variable", and "objc_refs" commands have been installed, use the "--help" options on these commands for detailed help. In addition to forwarding the silent option to LoadScriptingModule, this also changes ScriptInterpreterPythonImpl::ExecuteOneLineWithReturn and ScriptInterpreterPythonImpl::ExecuteMultipleLines to honor the enable IO option in ExecuteScriptOptions, which until now was ignored. Note that IO is only enabled (or disabled) at the start of a session, and for this particular use case, that's done when taking the Python lock in LoadScriptingModule, which means that the changes to these two functions are not strictly necessary, but (IMO) desirable nonetheless. Differential revision: https://reviews.llvm.org/D105327
Diffstat (limited to 'lldb/source/Commands/CommandObjectCommands.cpp')
-rw-r--r--lldb/source/Commands/CommandObjectCommands.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/lldb/source/Commands/CommandObjectCommands.cpp b/lldb/source/Commands/CommandObjectCommands.cpp
index c6b0f7f..9a8b81c 100644
--- a/lldb/source/Commands/CommandObjectCommands.cpp
+++ b/lldb/source/Commands/CommandObjectCommands.cpp
@@ -1242,6 +1242,9 @@ protected:
case 'c':
relative_to_command_file = true;
break;
+ case 's':
+ silent = true;
+ break;
default:
llvm_unreachable("Unimplemented option");
}
@@ -1257,6 +1260,7 @@ protected:
return llvm::makeArrayRef(g_script_import_options);
}
bool relative_to_command_file = false;
+ bool silent = false;
};
bool DoExecute(Args &command, CommandReturnObject &result) override {
@@ -1278,7 +1282,10 @@ protected:
for (auto &entry : command.entries()) {
Status error;
- const bool init_session = true;
+ LoadScriptOptions options;
+ options.SetInitSession(true);
+ options.SetSilent(m_options.silent);
+
// FIXME: this is necessary because CommandObject::CheckRequirements()
// assumes that commands won't ever be recursively invoked, but it's
// actually possible to craft a Python script that does other "command
@@ -1289,7 +1296,8 @@ protected:
// more)
m_exe_ctx.Clear();
if (GetDebugger().GetScriptInterpreter()->LoadScriptingModule(
- entry.c_str(), init_session, error, nullptr, source_dir)) {
+ entry.c_str(), options, error, /*module_sp=*/nullptr,
+ source_dir)) {
result.SetStatus(eReturnStatusSuccessFinishNoResult);
} else {
result.AppendErrorWithFormat("module importing failed: %s",