[Lldb-commits] [lldb] 14aace3 - Revert "Add runToBinaryEntry option for lldb-vscode"

Pavel Labath via lldb-commits lldb-commits at lists.llvm.org
Wed Nov 23 04:26:35 PST 2022


Author: Pavel Labath
Date: 2022-11-23T13:26:11+01:00
New Revision: 14aace34c35da1ae5ffc4abc599cbdb36bf33a01

URL: https://github.com/llvm/llvm-project/commit/14aace34c35da1ae5ffc4abc599cbdb36bf33a01
DIFF: https://github.com/llvm/llvm-project/commit/14aace34c35da1ae5ffc4abc599cbdb36bf33a01.diff

LOG: Revert "Add runToBinaryEntry option for lldb-vscode"

This reverts commit f0c16f89124f2dc0630162ff9ea23934f5b2b75b because it
breaks linux and mac bots.

Added: 
    

Modified: 
    lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/lldbvscode_testcase.py
    lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py
    lldb/test/API/tools/lldb-vscode/launch/TestVSCode_launch.py
    lldb/tools/lldb-vscode/VSCode.cpp
    lldb/tools/lldb-vscode/VSCode.h
    lldb/tools/lldb-vscode/lldb-vscode.cpp
    lldb/tools/lldb-vscode/package.json

Removed: 
    


################################################################################
diff  --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/lldbvscode_testcase.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/lldbvscode_testcase.py
index 99baad59dc12d..a91f3b2b8feff 100644
--- a/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/lldbvscode_testcase.py
+++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/lldbvscode_testcase.py
@@ -286,7 +286,7 @@ def launch(self, program=None, args=None, cwd=None, env=None,
                stopCommands=None, exitCommands=None, terminateCommands=None,
                sourcePath=None, debuggerRoot=None, sourceInitFile=False, launchCommands=None,
                sourceMap=None, disconnectAutomatically=True, runInTerminal=False,
-               expectFailure=False, postRunCommands=None, runToBinaryEntry=False):
+               expectFailure=False, postRunCommands=None):
         '''Sending launch request to vscode
         '''
 
@@ -323,8 +323,7 @@ def cleanup():
             sourceMap=sourceMap,
             runInTerminal=runInTerminal,
             expectFailure=expectFailure,
-            postRunCommands=postRunCommands,
-            runToBinaryEntry=runToBinaryEntry)
+            postRunCommands=postRunCommands)
 
         if expectFailure:
             return response
@@ -347,7 +346,7 @@ def build_and_launch(self, program, args=None, cwd=None, env=None,
                          terminateCommands=None, sourcePath=None,
                          debuggerRoot=None, sourceInitFile=False, runInTerminal=False,
                          disconnectAutomatically=True, postRunCommands=None,
-                         lldbVSCodeEnv=None, runToBinaryEntry=False):
+                         lldbVSCodeEnv=None):
         '''Build the default Makefile target, create the VSCode debug adaptor,
            and launch the process.
         '''
@@ -360,5 +359,4 @@ def build_and_launch(self, program, args=None, cwd=None, env=None,
                     terminateCommands, sourcePath, debuggerRoot, sourceInitFile,
                     runInTerminal=runInTerminal,
                     disconnectAutomatically=disconnectAutomatically,
-                    postRunCommands=postRunCommands,
-                    runToBinaryEntry=runToBinaryEntry)
+                    postRunCommands=postRunCommands)

diff  --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py
index f5f9ae30bbd46..c2de4ad5c7d9a 100644
--- a/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py
+++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py
@@ -650,7 +650,7 @@ def request_launch(self, program, args=None, cwd=None, env=None,
                        terminateCommands=None ,sourcePath=None,
                        debuggerRoot=None, launchCommands=None, sourceMap=None,
                        runInTerminal=False, expectFailure=False,
-                       postRunCommands=None, runToBinaryEntry=False):
+                       postRunCommands=None):
         args_dict = {
             'program': program
         }
@@ -662,8 +662,6 @@ def request_launch(self, program, args=None, cwd=None, env=None,
             args_dict['env'] = env
         if stopOnEntry:
             args_dict['stopOnEntry'] = stopOnEntry
-        if runToBinaryEntry:
-            args_dict['runToBinaryEntry'] = runToBinaryEntry
         if disableASLR:
             args_dict['disableASLR'] = disableASLR
         if disableSTDIO:

diff  --git a/lldb/test/API/tools/lldb-vscode/launch/TestVSCode_launch.py b/lldb/test/API/tools/lldb-vscode/launch/TestVSCode_launch.py
index 8bb89085bb156..6e916d72dda7d 100644
--- a/lldb/test/API/tools/lldb-vscode/launch/TestVSCode_launch.py
+++ b/lldb/test/API/tools/lldb-vscode/launch/TestVSCode_launch.py
@@ -78,29 +78,6 @@ def test_stopOnEntry(self):
                         reason, 'breakpoint',
                         'verify stop isn\'t "main" breakpoint')
 
-    @skipIfWindows
-    @skipIfRemote
-    def test_runToBinaryEntry(self):
-        '''
-            Tests the runToBinaryEntry option can successfully launch a simple
-            program and hit a breakpoint and does not interupt the launch.
-        '''
-        program = self.getBuildArtifact("a.out")
-        self.build_and_launch(program, runToBinaryEntry=True)
-        self.set_function_breakpoints(['main'])
-        stopped_events = self.continue_to_next_stop()
-        console_output = self.get_console()
-        self.assertIn("Process stopped successfully at the binary's entry point", console_output)
-
-        for stopped_event in stopped_events:
-            if 'body' in stopped_event:
-                body = stopped_event['body']
-                if 'reason' in body:
-                    reason = body['reason']
-                    self.assertTrue(
-                        reason == 'breakpoint',
-                        'verify successfully stop at "main" breakpoint')
-
     @skipIfWindows
     @skipIfRemote
     def test_cwd(self):

diff  --git a/lldb/tools/lldb-vscode/VSCode.cpp b/lldb/tools/lldb-vscode/VSCode.cpp
index 1e893ef0fbcc8..6cbdbfa3c24ef 100644
--- a/lldb/tools/lldb-vscode/VSCode.cpp
+++ b/lldb/tools/lldb-vscode/VSCode.cpp
@@ -528,8 +528,7 @@ void VSCode::RegisterRequestCallback(std::string request,
   request_handlers[request] = callback;
 }
 
-lldb::SBError VSCode::WaitForProcessToStop(uint32_t seconds,
-                                           uint32_t old_stop_id) {
+lldb::SBError VSCode::WaitForProcessToStop(uint32_t seconds) {
   lldb::SBError error;
   lldb::SBProcess process = target.GetProcess();
   if (!process.IsValid()) {
@@ -539,33 +538,28 @@ lldb::SBError VSCode::WaitForProcessToStop(uint32_t seconds,
   auto timeout_time =
       std::chrono::steady_clock::now() + std::chrono::seconds(seconds);
   while (std::chrono::steady_clock::now() < timeout_time) {
-    // Wait for stop id changed before checking for stopped state.
-    // This is needed to make sure we are not checking old stopped state in
-    // async mode.
-    if (old_stop_id > 0 && process.GetStopID() <= old_stop_id)
-      continue;
     const auto state = process.GetState();
     switch (state) {
-    case lldb::eStateAttaching:
-    case lldb::eStateConnected:
-    case lldb::eStateInvalid:
-    case lldb::eStateLaunching:
-    case lldb::eStateRunning:
-    case lldb::eStateStepping:
-    case lldb::eStateSuspended:
-      break;
-    case lldb::eStateDetached:
-      error.SetErrorString("process detached during launch or attach");
-      return error;
-    case lldb::eStateExited:
-      error.SetErrorString("process exited during launch or attach");
-      return error;
-    case lldb::eStateUnloaded:
-      error.SetErrorString("process unloaded during launch or attach");
-      return error;
-    case lldb::eStateCrashed:
-    case lldb::eStateStopped:
-      return lldb::SBError(); // Success!
+      case lldb::eStateAttaching:
+      case lldb::eStateConnected:
+      case lldb::eStateInvalid:
+      case lldb::eStateLaunching:
+      case lldb::eStateRunning:
+      case lldb::eStateStepping:
+      case lldb::eStateSuspended:
+        break;
+      case lldb::eStateDetached:
+        error.SetErrorString("process detached during launch or attach");
+        return error;
+      case lldb::eStateExited:
+        error.SetErrorString("process exited during launch or attach");
+        return error;
+      case lldb::eStateUnloaded:
+        error.SetErrorString("process unloaded during launch or attach");
+        return error;
+      case lldb::eStateCrashed:
+      case lldb::eStateStopped:
+        return lldb::SBError(); // Success!
     }
     std::this_thread::sleep_for(std::chrono::microseconds(250));
   }

diff  --git a/lldb/tools/lldb-vscode/VSCode.h b/lldb/tools/lldb-vscode/VSCode.h
index 9bc876e2d0d0b..aa325038b2e79 100644
--- a/lldb/tools/lldb-vscode/VSCode.h
+++ b/lldb/tools/lldb-vscode/VSCode.h
@@ -144,7 +144,6 @@ struct VSCode {
   lldb::tid_t focus_tid;
   bool sent_terminated_event;
   bool stop_at_entry;
-  bool run_to_binary_entry = false;
   bool is_attach;
   bool configuration_done_sent;
   uint32_t reverse_request_seq;
@@ -262,14 +261,9 @@ struct VSCode {
   ///
   /// \param[in] seconds
   ///   The number of seconds to poll the process to wait until it is stopped.
-  /// \param[in] old_stop_id
-  ///   Optional old stop id which we should only check for stopped state if
-  ///   the new stop id is greater than it. This is needed if the previous state
-  ///   is stopped so that we can ensure we are checking new stopped state not
-  ///   the old one in async mode.
   ///
   /// \return Error if waiting for the process fails, no error if succeeds.
-  lldb::SBError WaitForProcessToStop(uint32_t seconds, uint32_t old_stop_id = 0);
+  lldb::SBError WaitForProcessToStop(uint32_t seconds);
 
 private:
   // Send the JSON in "json_str" to the "out" stream. Correctly send the

diff  --git a/lldb/tools/lldb-vscode/lldb-vscode.cpp b/lldb/tools/lldb-vscode/lldb-vscode.cpp
index 52b106155d902..21d2bc2229043 100644
--- a/lldb/tools/lldb-vscode/lldb-vscode.cpp
+++ b/lldb/tools/lldb-vscode/lldb-vscode.cpp
@@ -1610,68 +1610,6 @@ llvm::Error request_runInTerminal(const llvm::json::Object &launch_request) {
                                  error.GetCString());
 }
 
-lldb::SBError RunToBinaryEntry() {
-  lldb::SBError error;
-  if (!g_vsc.run_to_binary_entry)
-    return error;
-
-  if (g_vsc.stop_at_entry) {
-    g_vsc.SendOutput(OutputType::Console,
-                     "RunToBinaryEntry is ignored due to StopOnEntry\n");
-    return error;
-  }
-
-  lldb::SBTarget target = g_vsc.debugger.GetSelectedTarget();
-  if (!target.IsValid())
-    return error;
-  lldb::SBFileSpec exe_file = target.GetExecutable();
-  if (!exe_file.IsValid())
-    return error;
-  lldb::SBModule exe_module = target.FindModule(exe_file);
-  if (!exe_module.IsValid()) {
-    g_vsc.SendOutput(OutputType::Console,
-                     "RunToBinaryEntry failed: invalid executable module\n");
-    return error;
-  }
-
-  lldb::SBAddress entry_point = exe_module.GetObjectFileEntryPointAddress();
-  if (!entry_point.IsValid()) {
-    g_vsc.SendOutput(OutputType::Console,
-                     "RunToBinaryEntry failed: can't find entry point\n");
-    return error;
-  }
-  lldb::SBBreakpoint entry_breakpoint =
-      target.BreakpointCreateBySBAddress(entry_point);
-  if (!entry_breakpoint.IsValid() || entry_breakpoint.GetNumLocations() == 0) {
-    g_vsc.SendOutput(OutputType::Console,
-                     "RunToBinaryEntry failed: can't resolve the entry point breakpoint\n");
-    return error;
-  }
-
-  uint32_t old_stop_id = target.GetProcess().GetStopID();
-  entry_breakpoint.SetOneShot(true);
-  error = target.GetProcess().Continue();
-  if (error.Fail())
-    return error;
-
-  const uint64_t timeout_seconds = 600;
-  error = g_vsc.WaitForProcessToStop(timeout_seconds, old_stop_id);
-  if (error.Fail())
-    return error;
-
-  // Successfully got a process stop; we still need to check if the stop is what
-  // we expected.
-  if (entry_breakpoint.GetHitCount() == 0)
-    g_vsc.SendOutput(OutputType::Telemetry,
-                     "RunToBinaryEntry failed: process stopped not at the "
-                     "binary's entry point\n");
-  else
-    g_vsc.SendOutput(OutputType::Telemetry,
-                     "RunToBinaryEntry success: Process stopped successfully "
-                     "at the binary's entry point\n");
-  return error;
-}
-
 // "LaunchRequest": {
 //   "allOf": [ { "$ref": "#/definitions/Request" }, {
 //     "type": "object",
@@ -1721,7 +1659,6 @@ void request_launch(const llvm::json::Object &request) {
   std::vector<std::string> postRunCommands =
       GetStrings(arguments, "postRunCommands");
   g_vsc.stop_at_entry = GetBoolean(arguments, "stopOnEntry", false);
-  g_vsc.run_to_binary_entry = GetBoolean(arguments, "runToBinaryEntry", false);
   const llvm::StringRef debuggerRoot = GetString(arguments, "debuggerRoot");
   const uint64_t timeout_seconds = GetUnsigned(arguments, "timeout", 30);
 
@@ -1804,9 +1741,6 @@ void request_launch(const llvm::json::Object &request) {
     error = g_vsc.WaitForProcessToStop(timeout_seconds);
   }
 
-  if (error.Success())
-    error = RunToBinaryEntry();
-
   if (error.Fail()) {
     response["success"] = llvm::json::Value(false);
     EmplaceSafeString(response, "message", std::string(error.GetCString()));

diff  --git a/lldb/tools/lldb-vscode/package.json b/lldb/tools/lldb-vscode/package.json
index ba669bae65dad..c5d7f2445619d 100644
--- a/lldb/tools/lldb-vscode/package.json
+++ b/lldb/tools/lldb-vscode/package.json
@@ -157,11 +157,6 @@
 								"description": "Automatically stop after launch.",
 								"default": false
 							},
-							"runToBinaryEntry": {
-								"type": "boolean",
-								"description": "run to program entry one-shot breakpoint during launch to ensure dependency modules are loaded.",
-								"default": false
-							},
 							"disableASLR": {
 								"type": "boolean",
 								"description": "Enable or disable Address space layout randomization if the debugger supports it.",


        


More information about the lldb-commits mailing list