Revert "[lldb/Command] Add --force option for `watchpoint delete` command"
authorMed Ismail Bennani <medismail.bennani@gmail.com>
Fri, 3 Jan 2020 01:14:45 +0000 (02:14 +0100)
committerMed Ismail Bennani <medismail.bennani@gmail.com>
Fri, 3 Jan 2020 01:14:45 +0000 (02:14 +0100)
This reverts commit 3620e5f28a4d2800fb6c325ec24b3d660e48b9ba.

lldb/packages/Python/lldbsuite/test/commands/watchpoints/watchpoint_commands/TestWatchpointCommands.py
lldb/source/Commands/CommandObjectWatchpoint.cpp
lldb/source/Commands/Options.td

index e92af6d..27c332b 100644 (file)
@@ -157,56 +157,6 @@ class WatchpointCommandsTestCase(TestBase):
 
     # Read-write watchpoints not supported on SystemZ
     @expectedFailureAll(archs=['s390x'])
-    def test_rw_watchpoint_delete(self):
-        """Test delete watchpoint and expect not to stop for watchpoint."""
-        self.build(dictionary=self.d)
-        self.setTearDownCleanup(dictionary=self.d)
-
-        exe = self.getBuildArtifact(self.exe_name)
-        self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET)
-
-        # Add a breakpoint to set a watchpoint when stopped on the breakpoint.
-        lldbutil.run_break_set_by_file_and_line(
-            self, None, self.line, num_expected_locations=1)
-
-        # Run the program.
-        self.runCmd("run", RUN_SUCCEEDED)
-
-        # We should be stopped again due to the breakpoint.
-        # The stop reason of the thread should be breakpoint.
-        self.expect("thread list", STOPPED_DUE_TO_BREAKPOINT,
-                    substrs=['stopped',
-                             'stop reason = breakpoint'])
-
-        # Now let's set a read_write-type watchpoint for 'global'.
-        # There should be two watchpoint hits (see main.c).
-        self.expect(
-            "watchpoint set variable -w read_write global",
-            WATCHPOINT_CREATED,
-            substrs=[
-                'Watchpoint created',
-                'size = 4',
-                'type = rw',
-                '%s:%d' %
-                (self.source,
-                 self.decl)])
-
-        # Delete the watchpoint immediately using the force option.
-        self.expect("watchpoint delete --force",
-                    substrs=['All watchpoints removed.'])
-
-        # Use the '-v' option to do verbose listing of the watchpoint.
-        self.runCmd("watchpoint list -v")
-
-        self.runCmd("process continue")
-
-        # There should be no more watchpoint hit and the process status should
-        # be 'exited'.
-        self.expect("process status",
-                    substrs=['exited'])
-
-    # Read-write watchpoints not supported on SystemZ
-    @expectedFailureAll(archs=['s390x'])
     def test_rw_watchpoint_set_ignore_count(self):
         """Test watchpoint ignore count and expect to not to stop at all."""
         self.build(dictionary=self.d)
index c965d35..1b1d597 100644 (file)
@@ -415,10 +415,6 @@ protected:
 };
 
 // CommandObjectWatchpointDelete
-#define LLDB_OPTIONS_watchpoint_delete
-#include "CommandOptions.inc"
-
-// CommandObjectWatchpointDelete
 #pragma mark Delete
 
 class CommandObjectWatchpointDelete : public CommandObjectParsed {
@@ -427,8 +423,7 @@ public:
       : CommandObjectParsed(interpreter, "watchpoint delete",
                             "Delete the specified watchpoint(s).  If no "
                             "watchpoints are specified, delete them all.",
-                            nullptr, eCommandRequiresTarget),
-        m_options() {
+                            nullptr, eCommandRequiresTarget) {
     CommandArgumentEntry arg;
     CommandObject::AddIDsArgumentData(arg, eArgTypeWatchpointID,
                                       eArgTypeWatchpointIDRange);
@@ -439,41 +434,6 @@ public:
 
   ~CommandObjectWatchpointDelete() override = default;
 
-  Options *GetOptions() override { return &m_options; }
-
-  class CommandOptions : public Options {
-  public:
-    CommandOptions() : Options(), m_force(false) {}
-
-    ~CommandOptions() override = default;
-
-    Status SetOptionValue(uint32_t option_idx, llvm::StringRef option_arg,
-                          ExecutionContext *execution_context) override {
-      const int short_option = m_getopt_table[option_idx].val;
-
-      switch (short_option) {
-      case 'f':
-        m_force = true;
-        break;
-      default:
-        llvm_unreachable("Unimplemented option");
-      }
-
-      return {};
-    }
-
-    void OptionParsingStarting(ExecutionContext *execution_context) override {
-      m_force = false;
-    }
-
-    llvm::ArrayRef<OptionDefinition> GetDefinitions() override {
-      return llvm::makeArrayRef(g_watchpoint_delete_options);
-    }
-
-    // Instance variables to hold the values for command options.
-    bool m_force;
-  };
-
 protected:
   bool DoExecute(Args &command, CommandReturnObject &result) override {
     Target *target = &GetSelectedTarget();
@@ -493,9 +453,8 @@ protected:
       return false;
     }
 
-    if (command.empty()) {
-      if (!m_options.m_force &&
-          !m_interpreter.Confirm(
+    if (command.GetArgumentCount() == 0) {
+      if (!m_interpreter.Confirm(
               "About to delete all watchpoints, do you want to do that?",
               true)) {
         result.AppendMessage("Operation cancelled...");
@@ -506,31 +465,27 @@ protected:
                                        (uint64_t)num_watchpoints);
       }
       result.SetStatus(eReturnStatusSuccessFinishNoResult);
-      return result.Succeeded();
-    }
+    } else {
+      // Particular watchpoints selected; delete them.
+      std::vector<uint32_t> wp_ids;
+      if (!CommandObjectMultiwordWatchpoint::VerifyWatchpointIDs(
+              target, command, wp_ids)) {
+        result.AppendError("Invalid watchpoints specification.");
+        result.SetStatus(eReturnStatusFailed);
+        return false;
+      }
 
-    // Particular watchpoints selected; delete them.
-    std::vector<uint32_t> wp_ids;
-    if (!CommandObjectMultiwordWatchpoint::VerifyWatchpointIDs(target, command,
-                                                               wp_ids)) {
-      result.AppendError("Invalid watchpoints specification.");
-      result.SetStatus(eReturnStatusFailed);
-      return false;
+      int count = 0;
+      const size_t size = wp_ids.size();
+      for (size_t i = 0; i < size; ++i)
+        if (target->RemoveWatchpointByID(wp_ids[i]))
+          ++count;
+      result.AppendMessageWithFormat("%d watchpoints deleted.\n", count);
+      result.SetStatus(eReturnStatusSuccessFinishNoResult);
     }
 
-    int count = 0;
-    const size_t size = wp_ids.size();
-    for (size_t i = 0; i < size; ++i)
-      if (target->RemoveWatchpointByID(wp_ids[i]))
-        ++count;
-    result.AppendMessageWithFormat("%d watchpoints deleted.\n", count);
-    result.SetStatus(eReturnStatusSuccessFinishNoResult);
-
     return result.Succeeded();
   }
-
-private:
-  CommandOptions m_options;
 };
 
 // CommandObjectWatchpointIgnore
index 850df13..f53d148 100644 (file)
@@ -1126,8 +1126,3 @@ let Command = "watchpoint command add" in {
     "to run as command for this watchpoint. Be sure to give a module name if "
     "appropriate.">;
 }
-
-let Command = "watchpoint delete" in {
-  def watchpoint_delete_force : Option<"force", "f">, Group<1>,
-    Desc<"Delete all watchpoints without querying for confirmation.">;
-}