diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2020-07-26 19:36:28 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2020-07-26 19:36:28 +0000 |
commit | cfca06d7963fa0909f90483b42a6d7d194d01e08 (patch) | |
tree | 209fb2a2d68f8f277793fc8df46c753d31bc853b /lldb/source/Commands/CommandObjectBreakpoint.cpp | |
parent | 706b4fc47bbc608932d3b491ae19a3b9cde9497b (diff) | |
download | src-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.cpp | 107 |
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; |