[Lldb-commits] [lldb] 68cb7d8 - [lldb/Commands] Honor the scripting language passed (2/2)
Jonas Devlieghere via lldb-commits
lldb-commits at lists.llvm.org
Sat Dec 21 22:33:23 PST 2019
Author: Jonas Devlieghere
Date: 2019-12-21T22:32:13-08:00
New Revision: 68cb7d85423c19a61c5d6afbc8e004a345a28856
URL: https://github.com/llvm/llvm-project/commit/68cb7d85423c19a61c5d6afbc8e004a345a28856
DIFF: https://github.com/llvm/llvm-project/commit/68cb7d85423c19a61c5d6afbc8e004a345a28856.diff
LOG: [lldb/Commands] Honor the scripting language passed (2/2)
This ensures that watchpoint command honors the scripting language
passed with `-s`. Currently the argument ignores the actual language and
only uses it to differentiate between lldb and script commands.
Added:
Modified:
lldb/source/Commands/CommandObjectWatchpointCommand.cpp
Removed:
################################################################################
diff --git a/lldb/source/Commands/CommandObjectWatchpointCommand.cpp b/lldb/source/Commands/CommandObjectWatchpointCommand.cpp
index 237c4e28638c..4cc74e77ed4d 100644
--- a/lldb/source/Commands/CommandObjectWatchpointCommand.cpp
+++ b/lldb/source/Commands/CommandObjectWatchpointCommand.cpp
@@ -36,6 +36,11 @@ static constexpr OptionEnumValueElement g_script_option_enumeration[] = {
"python",
"Commands are in the Python language.",
},
+ {
+ eScriptLanguageLua,
+ "lua",
+ "Commands are in the Python language.",
+ },
{
eSortOrderByName,
"default-script",
@@ -331,8 +336,16 @@ are no syntax errors may indicate that a function was declared but never called.
option_arg, GetDefinitions()[option_idx].enum_values,
eScriptLanguageNone, error);
- m_use_script_language = (m_script_language == eScriptLanguagePython ||
- m_script_language == eScriptLanguageDefault);
+ switch (m_script_language) {
+ case eScriptLanguagePython:
+ case eScriptLanguageLua:
+ m_use_script_language = true;
+ break;
+ case eScriptLanguageNone:
+ case eScriptLanguageUnknown:
+ m_use_script_language = false;
+ break;
+ }
break;
case 'e': {
@@ -347,7 +360,6 @@ are no syntax errors may indicate that a function was declared but never called.
case 'F':
m_use_one_liner = false;
- m_use_script_language = true;
m_function_name.assign(option_arg);
break;
@@ -398,12 +410,11 @@ are no syntax errors may indicate that a function was declared but never called.
return false;
}
- if (!m_options.m_use_script_language &&
- !m_options.m_function_name.empty()) {
- result.AppendError("need to enable scripting to have a function run as a "
- "watchpoint command");
- result.SetStatus(eReturnStatusFailed);
- return false;
+ if (!m_options.m_function_name.empty()) {
+ if (!m_options.m_use_script_language) {
+ m_options.m_script_language = GetDebugger().GetScriptLanguage();
+ m_options.m_use_script_language = true;
+ }
}
std::vector<uint32_t> valid_wp_ids;
@@ -433,9 +444,11 @@ are no syntax errors may indicate that a function was declared but never called.
// to set or collect command callback. Otherwise, call the methods
// associated with this object.
if (m_options.m_use_script_language) {
+ ScriptInterpreter *script_interp = GetDebugger().GetScriptInterpreter(
+ /*can_create=*/true, m_options.m_script_language);
// Special handling for one-liner specified inline.
if (m_options.m_use_one_liner) {
- GetDebugger().GetScriptInterpreter()->SetWatchpointCommandCallback(
+ script_interp->SetWatchpointCommandCallback(
wp_options, m_options.m_one_liner.c_str());
}
// Special handling for using a Python function by name instead of
@@ -445,12 +458,11 @@ are no syntax errors may indicate that a function was declared but never called.
else if (!m_options.m_function_name.empty()) {
std::string oneliner(m_options.m_function_name);
oneliner += "(frame, wp, internal_dict)";
- GetDebugger().GetScriptInterpreter()->SetWatchpointCommandCallback(
+ script_interp->SetWatchpointCommandCallback(
wp_options, oneliner.c_str());
} else {
- GetDebugger()
- .GetScriptInterpreter()
- ->CollectDataForWatchpointCommandCallback(wp_options, result);
+ script_interp->CollectDataForWatchpointCommandCallback(wp_options,
+ result);
}
} else {
// Special handling for one-liner specified inline.
More information about the lldb-commits
mailing list