mirror of
https://github.com/intel/llvm.git
synced 2026-01-21 12:19:23 +08:00
[lldb] Unify target checking in CommandObject
Summary: We currently have several CommandObjects that manually reimplement the checking for a selected target or a target in the execution context (which is the selected target when they are invoked). This patch removes all these checks and replaces them by setting the eCommandRequiresTarget flag that Pavel suggested. With this flag we are doing the same check but without having to duplicate this code in all these CommandObjects. I also added a `GetSelectedTarget()` variant of the `GetSelectedOrDummyTarget()` function to the CommandObject that checks that the flag is set and then returns a reference to the target. I didn't rewrite all the `target` variables from `Target *` to `Target &` in this patch as last time this change caused a lot of merge conflicts in Swift and I would prefer having that in a separate NFC commit. Reviewers: labath, clayborg Reviewed By: labath, clayborg Subscribers: clayborg, JDevlieghere, jingham, amccarth, abidh, lldb-commits Tags: #lldb Differential Revision: https://reviews.llvm.org/D66863 llvm-svn: 370571
This commit is contained in:
@@ -59,7 +59,7 @@ public:
|
||||
: CommandObjectParsed(interpreter, "add",
|
||||
"Add a set of LLDB commands to a watchpoint, to be "
|
||||
"executed whenever the watchpoint is hit.",
|
||||
nullptr),
|
||||
nullptr, eCommandRequiresTarget),
|
||||
IOHandlerDelegateMultiline("DONE",
|
||||
IOHandlerDelegate::Completion::LLDBCommand),
|
||||
m_options() {
|
||||
@@ -389,14 +389,7 @@ are no syntax errors may indicate that a function was declared but never called.
|
||||
|
||||
protected:
|
||||
bool DoExecute(Args &command, CommandReturnObject &result) override {
|
||||
Target *target = GetDebugger().GetSelectedTarget().get();
|
||||
|
||||
if (target == nullptr) {
|
||||
result.AppendError("There is not a current executable; there are no "
|
||||
"watchpoints to which to add commands");
|
||||
result.SetStatus(eReturnStatusFailed);
|
||||
return false;
|
||||
}
|
||||
Target *target = &GetSelectedTarget();
|
||||
|
||||
const WatchpointList &watchpoints = target->GetWatchpointList();
|
||||
size_t num_watchpoints = watchpoints.GetSize();
|
||||
@@ -486,7 +479,7 @@ public:
|
||||
CommandObjectWatchpointCommandDelete(CommandInterpreter &interpreter)
|
||||
: CommandObjectParsed(interpreter, "delete",
|
||||
"Delete the set of commands from a watchpoint.",
|
||||
nullptr) {
|
||||
nullptr, eCommandRequiresTarget) {
|
||||
CommandArgumentEntry arg;
|
||||
CommandArgumentData wp_id_arg;
|
||||
|
||||
@@ -506,14 +499,7 @@ public:
|
||||
|
||||
protected:
|
||||
bool DoExecute(Args &command, CommandReturnObject &result) override {
|
||||
Target *target = GetDebugger().GetSelectedTarget().get();
|
||||
|
||||
if (target == nullptr) {
|
||||
result.AppendError("There is not a current executable; there are no "
|
||||
"watchpoints from which to delete commands");
|
||||
result.SetStatus(eReturnStatusFailed);
|
||||
return false;
|
||||
}
|
||||
Target *target = &GetSelectedTarget();
|
||||
|
||||
const WatchpointList &watchpoints = target->GetWatchpointList();
|
||||
size_t num_watchpoints = watchpoints.GetSize();
|
||||
@@ -562,10 +548,10 @@ protected:
|
||||
class CommandObjectWatchpointCommandList : public CommandObjectParsed {
|
||||
public:
|
||||
CommandObjectWatchpointCommandList(CommandInterpreter &interpreter)
|
||||
: CommandObjectParsed(interpreter, "list", "List the script or set of "
|
||||
"commands to be executed when "
|
||||
"the watchpoint is hit.",
|
||||
nullptr) {
|
||||
: CommandObjectParsed(interpreter, "list",
|
||||
"List the script or set of commands to be executed "
|
||||
"when the watchpoint is hit.",
|
||||
nullptr, eCommandRequiresTarget) {
|
||||
CommandArgumentEntry arg;
|
||||
CommandArgumentData wp_id_arg;
|
||||
|
||||
@@ -585,14 +571,7 @@ public:
|
||||
|
||||
protected:
|
||||
bool DoExecute(Args &command, CommandReturnObject &result) override {
|
||||
Target *target = GetDebugger().GetSelectedTarget().get();
|
||||
|
||||
if (target == nullptr) {
|
||||
result.AppendError("There is not a current executable; there are no "
|
||||
"watchpoints for which to list commands");
|
||||
result.SetStatus(eReturnStatusFailed);
|
||||
return false;
|
||||
}
|
||||
Target *target = &GetSelectedTarget();
|
||||
|
||||
const WatchpointList &watchpoints = target->GetWatchpointList();
|
||||
size_t num_watchpoints = watchpoints.GetSize();
|
||||
|
||||
Reference in New Issue
Block a user