aboutsummaryrefslogtreecommitdiff
path: root/lldb/source/Commands/CommandObjectBreakpoint.cpp
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2020-07-26 19:36:28 +0000
committerDimitry Andric <dim@FreeBSD.org>2020-07-26 19:36:28 +0000
commitcfca06d7963fa0909f90483b42a6d7d194d01e08 (patch)
tree209fb2a2d68f8f277793fc8df46c753d31bc853b /lldb/source/Commands/CommandObjectBreakpoint.cpp
parent706b4fc47bbc608932d3b491ae19a3b9cde9497b (diff)
downloadsrc-cfca06d7963fa0909f90483b42a6d7d194d01e08.tar.gz
src-cfca06d7963fa0909f90483b42a6d7d194d01e08.zip
Vendor import of llvm-project master 2e10b7a39b9, the last commit beforevendor/llvm-project/llvmorg-11-init-20887-g2e10b7a39b9vendor/llvm-project/master
the llvmorg-12-init tag, from which release/11.x was branched.
Notes
Notes: svn path=/vendor/llvm-project/master/; revision=363578 svn path=/vendor/llvm-project/llvmorg-11-init-20887-g2e10b7a39b9/; revision=363579; tag=vendor/llvm-project/llvmorg-11-init-20887-g2e10b7a39b9
Diffstat (limited to 'lldb/source/Commands/CommandObjectBreakpoint.cpp')
-rw-r--r--lldb/source/Commands/CommandObjectBreakpoint.cpp107
1 files changed, 82 insertions, 25 deletions
diff --git a/lldb/source/Commands/CommandObjectBreakpoint.cpp b/lldb/source/Commands/CommandObjectBreakpoint.cpp
index 7c4c50ecf3f9..be7ef8a1b60b 100644
--- a/lldb/source/Commands/CommandObjectBreakpoint.cpp
+++ b/lldb/source/Commands/CommandObjectBreakpoint.cpp
@@ -1,4 +1,4 @@
-//===-- CommandObjectBreakpoint.cpp -----------------------------*- C++ -*-===//
+//===-- CommandObjectBreakpoint.cpp ---------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
@@ -70,7 +70,7 @@ public:
m_bp_opts.m_set_flags.Set(BreakpointOptions::eCondition);
break;
case 'C':
- m_commands.push_back(option_arg);
+ m_commands.push_back(std::string(option_arg));
break;
case 'd':
m_bp_opts.SetEnabled(false);
@@ -270,11 +270,11 @@ public:
break;
case 'b':
- m_func_names.push_back(option_arg);
+ m_func_names.push_back(std::string(option_arg));
m_func_name_type_mask |= eFunctionNameTypeBase;
break;
- case 'C':
+ case 'u':
if (option_arg.getAsInteger(0, m_column))
error.SetErrorStringWithFormat("invalid column number: %s",
option_arg.str().c_str());
@@ -320,7 +320,7 @@ public:
break;
case 'F':
- m_func_names.push_back(option_arg);
+ m_func_names.push_back(std::string(option_arg));
m_func_name_type_mask |= eFunctionNameTypeFull;
break;
@@ -383,18 +383,18 @@ public:
}
case 'M':
- m_func_names.push_back(option_arg);
+ m_func_names.push_back(std::string(option_arg));
m_func_name_type_mask |= eFunctionNameTypeMethod;
break;
case 'n':
- m_func_names.push_back(option_arg);
+ m_func_names.push_back(std::string(option_arg));
m_func_name_type_mask |= eFunctionNameTypeAuto;
break;
case 'N': {
if (BreakpointID::StringIsBreakpointName(option_arg, error))
- m_breakpoint_names.push_back(option_arg);
+ m_breakpoint_names.push_back(std::string(option_arg));
else
error.SetErrorStringWithFormat("Invalid breakpoint name: %s",
option_arg.str().c_str());
@@ -415,11 +415,11 @@ public:
break;
case 'p':
- m_source_text_regexp.assign(option_arg);
+ m_source_text_regexp.assign(std::string(option_arg));
break;
case 'r':
- m_func_regexp.assign(option_arg);
+ m_func_regexp.assign(std::string(option_arg));
break;
case 's':
@@ -427,7 +427,7 @@ public:
break;
case 'S':
- m_func_names.push_back(option_arg);
+ m_func_names.push_back(std::string(option_arg));
m_func_name_type_mask |= eFunctionNameTypeSelector;
break;
@@ -441,7 +441,7 @@ public:
} break;
case 'X':
- m_source_regex_func_names.insert(option_arg);
+ m_source_regex_func_names.insert(std::string(option_arg));
break;
default:
@@ -620,8 +620,16 @@ protected:
RegularExpression regexp(m_options.m_func_regexp);
if (llvm::Error err = regexp.GetError()) {
result.AppendErrorWithFormat(
- "Function name regular expression could not be compiled: \"%s\"",
+ "Function name regular expression could not be compiled: %s",
llvm::toString(std::move(err)).c_str());
+ // Check if the incorrect regex looks like a globbing expression and
+ // warn the user about it.
+ if (!m_options.m_func_regexp.empty()) {
+ if (m_options.m_func_regexp[0] == '*' ||
+ m_options.m_func_regexp[0] == '?')
+ result.AppendWarning(
+ "Function name regex does not accept glob patterns.");
+ }
result.SetStatus(eReturnStatusFailed);
return false;
}
@@ -811,6 +819,14 @@ public:
~CommandObjectBreakpointModify() override = default;
+ void
+ HandleArgumentCompletion(CompletionRequest &request,
+ OptionElementVector &opt_element_vector) override {
+ CommandCompletions::InvokeCommonCompletionCallbacks(
+ GetCommandInterpreter(), CommandCompletions::eBreakpointCompletion,
+ request, nullptr);
+ }
+
Options *GetOptions() override { return &m_options; }
protected:
@@ -877,6 +893,14 @@ public:
~CommandObjectBreakpointEnable() override = default;
+ void
+ HandleArgumentCompletion(CompletionRequest &request,
+ OptionElementVector &opt_element_vector) override {
+ CommandCompletions::InvokeCommonCompletionCallbacks(
+ GetCommandInterpreter(), CommandCompletions::eBreakpointCompletion,
+ request, nullptr);
+ }
+
protected:
bool DoExecute(Args &command, CommandReturnObject &result) override {
Target &target = GetSelectedOrDummyTarget();
@@ -985,6 +1009,14 @@ the second re-enables the first location.");
~CommandObjectBreakpointDisable() override = default;
+ void
+ HandleArgumentCompletion(CompletionRequest &request,
+ OptionElementVector &opt_element_vector) override {
+ CommandCompletions::InvokeCommonCompletionCallbacks(
+ GetCommandInterpreter(), CommandCompletions::eBreakpointCompletion,
+ request, nullptr);
+ }
+
protected:
bool DoExecute(Args &command, CommandReturnObject &result) override {
Target &target = GetSelectedOrDummyTarget();
@@ -1231,7 +1263,7 @@ public:
switch (short_option) {
case 'f':
- m_filename.assign(option_arg);
+ m_filename.assign(std::string(option_arg));
break;
case 'l':
@@ -1363,6 +1395,14 @@ public:
~CommandObjectBreakpointDelete() override = default;
+ void
+ HandleArgumentCompletion(CompletionRequest &request,
+ OptionElementVector &opt_element_vector) override {
+ CommandCompletions::InvokeCommonCompletionCallbacks(
+ GetCommandInterpreter(), CommandCompletions::eBreakpointCompletion,
+ request, nullptr);
+ }
+
Options *GetOptions() override { return &m_options; }
class CommandOptions : public Options {
@@ -1730,6 +1770,14 @@ public:
~CommandObjectBreakpointNameAdd() override = default;
+ void
+ HandleArgumentCompletion(CompletionRequest &request,
+ OptionElementVector &opt_element_vector) override {
+ CommandCompletions::InvokeCommonCompletionCallbacks(
+ GetCommandInterpreter(), CommandCompletions::eBreakpointCompletion,
+ request, nullptr);
+ }
+
Options *GetOptions() override { return &m_option_group; }
protected:
@@ -1809,6 +1857,14 @@ public:
~CommandObjectBreakpointNameDelete() override = default;
+ void
+ HandleArgumentCompletion(CompletionRequest &request,
+ OptionElementVector &opt_element_vector) override {
+ CommandCompletions::InvokeCommonCompletionCallbacks(
+ GetCommandInterpreter(), CommandCompletions::eBreakpointCompletion,
+ request, nullptr);
+ }
+
Options *GetOptions() override { return &m_option_group; }
protected:
@@ -1978,14 +2034,7 @@ public:
"Read and set the breakpoints previously saved to "
"a file with \"breakpoint write\". ",
nullptr),
- m_options() {
- CommandArgumentEntry arg;
- CommandObject::AddIDsArgumentData(arg, eArgTypeBreakpointID,
- eArgTypeBreakpointIDRange);
- // Add the entry for the first argument for this command to the object's
- // arguments vector.
- m_arguments.push_back(arg);
- }
+ m_options() {}
~CommandObjectBreakpointRead() override = default;
@@ -2004,7 +2053,7 @@ public:
switch (short_option) {
case 'f':
- m_filename.assign(option_arg);
+ m_filename.assign(std::string(option_arg));
break;
case 'N': {
Status name_error;
@@ -2013,7 +2062,7 @@ public:
error.SetErrorStringWithFormat("Invalid breakpoint name: %s",
name_error.AsCString());
}
- m_names.push_back(option_arg);
+ m_names.push_back(std::string(option_arg));
break;
}
default:
@@ -2107,6 +2156,14 @@ public:
~CommandObjectBreakpointWrite() override = default;
+ void
+ HandleArgumentCompletion(CompletionRequest &request,
+ OptionElementVector &opt_element_vector) override {
+ CommandCompletions::InvokeCommonCompletionCallbacks(
+ GetCommandInterpreter(), CommandCompletions::eBreakpointCompletion,
+ request, nullptr);
+ }
+
Options *GetOptions() override { return &m_options; }
class CommandOptions : public Options {
@@ -2122,7 +2179,7 @@ public:
switch (short_option) {
case 'f':
- m_filename.assign(option_arg);
+ m_filename.assign(std::string(option_arg));
break;
case 'a':
m_append = true;