Index: lldb/lit/lit-lldb-init.in =================================================================== --- lldb/lit/lit-lldb-init.in +++ lldb/lit/lit-lldb-init.in @@ -1,3 +1,4 @@ # LLDB init file for the LIT tests. settings set symbols.enable-external-lookup false +settings set plugin.process.gdb-remote.packet-timeout 60 settings set interpreter.echo-comment-commands false Index: lldb/packages/Python/lldbsuite/test/api/multithreaded/driver.cpp.template =================================================================== --- lldb/packages/Python/lldbsuite/test/api/multithreaded/driver.cpp.template +++ lldb/packages/Python/lldbsuite/test/api/multithreaded/driver.cpp.template @@ -32,6 +32,8 @@ SBDebugger::Initialize(); SBDebugger dbg = SBDebugger::Create(); dbg.HandleCommand("settings set symbols.enable-external-lookup false"); + dbg.HandleCommand( + "settings set plugin.process.gdb-remote.packet-timeout 60"); try { if (!dbg.IsValid()) Index: lldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/TestNoWatchpointSupportInfo.py =================================================================== --- lldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/TestNoWatchpointSupportInfo.py +++ lldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/TestNoWatchpointSupportInfo.py @@ -21,6 +21,7 @@ def threadStopInfo(self, threadnum): if threadnum == 0x1ff0d: return "T02thread:1ff0d;thread-pcs:10001bc00;" + return "" def setBreakpoint(self, packet): if packet.startswith("Z2,"): Index: lldb/packages/Python/lldbsuite/test/lldbtest.py =================================================================== --- lldb/packages/Python/lldbsuite/test/lldbtest.py +++ lldb/packages/Python/lldbsuite/test/lldbtest.py @@ -696,6 +696,17 @@ """Return absolute path to a file in the test's source directory.""" return os.path.join(self.getSourceDir(), name) + @staticmethod + def setUpCommands(): + return [ + # Disable Spotlight lookup. The testsuite creates + # different binaries with the same UUID, because they only + # differ in the debug info, which is not being hashed. + "settings set symbols.enable-external-lookup false", + + # Testsuite runs in parallel and the host can have also other load. + "settings set plugin.process.gdb-remote.packet-timeout 60"] + def setUp(self): """Fixture for unittest test case setup. @@ -714,7 +725,8 @@ else: self.lldbVSCodeExec = None - self.lldbOption = "-o 'settings set symbols.enable-external-lookup false'" + self.lldbOption = " ".join( + "-o '" + s + "'" for s in self.setUpCommands()) # If we spawn an lldb process for test (via pexpect), do not load the # init file unless told otherwise. @@ -1854,10 +1866,8 @@ self.runCmd('settings set symbols.clang-modules-cache-path "%s"' % mod_cache) - # Disable Spotlight lookup. The testsuite creates - # different binaries with the same UUID, because they only - # differ in the debug info, which is not being hashed. - self.runCmd('settings set symbols.enable-external-lookup false') + for s in self.setUpCommands(): + self.runCmd(s) # Disable color. self.runCmd("settings set use-color false") Index: lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/lldbvscode_testcase.py =================================================================== --- lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/lldbvscode_testcase.py +++ lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/lldbvscode_testcase.py @@ -11,7 +11,8 @@ '''Create the Visual Studio Code debug adaptor''' self.assertTrue(os.path.exists(self.lldbVSCodeExec), 'lldb-vscode must exist') - self.vscode = vscode.DebugAdaptor(executable=self.lldbVSCodeExec) + self.vscode = vscode.DebugAdaptor( + executable=self.lldbVSCodeExec, init_commands=Base.setUpCommands()) def build_and_create_debug_adaptor(self): self.build() Index: lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py =================================================================== --- lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py +++ lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py @@ -99,7 +99,7 @@ class DebugCommunication(object): - def __init__(self, recv, send): + def __init__(self, recv, send, init_commands): self.trace_file = None self.send = send self.recv = recv @@ -118,6 +118,7 @@ self.output = {} self.configuration_done_sent = False self.frame_scopes = {} + self.init_commands = init_commands @classmethod def encode_content(cls, s): @@ -447,8 +448,7 @@ args_dict['waitFor'] = waitFor if trace: args_dict['trace'] = trace - args_dict['initCommands'] = [ - 'settings set symbols.enable-external-lookup false'] + args_dict['initCommands'] = self.init_commands if initCommands: args_dict['initCommands'].extend(initCommands) if preRunCommands: @@ -578,8 +578,7 @@ args_dict['shellExpandArguments'] = shellExpandArguments if trace: args_dict['trace'] = trace - args_dict['initCommands'] = [ - 'settings set symbols.enable-external-lookup false'] + args_dict['initCommands'] = self.init_commands if initCommands: args_dict['initCommands'].extend(initCommands) if preRunCommands: @@ -822,7 +821,7 @@ class DebugAdaptor(DebugCommunication): - def __init__(self, executable=None, port=None): + def __init__(self, executable=None, port=None, init_commands=[]): self.process = None if executable is not None: self.process = subprocess.Popen([executable], @@ -830,11 +829,12 @@ stdout=subprocess.PIPE, stderr=subprocess.PIPE) DebugCommunication.__init__(self, self.process.stdout, - self.process.stdin) + self.process.stdin, init_commands) elif port is not None: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(('127.0.0.1', port)) - DebugCommunication.__init__(self, s.makefile('r'), s.makefile('w')) + DebugCommunication.__init__(self, s.makefile('r'), s.makefile('w'), + init_commands) def get_pid(self): if self.process: Index: lldb/tools/lldb-test/lldb-test.cpp =================================================================== --- lldb/tools/lldb-test/lldb-test.cpp +++ lldb/tools/lldb-test/lldb-test.cpp @@ -976,6 +976,12 @@ auto Dbg = lldb_private::Debugger::CreateInstance(); ModuleList::GetGlobalModuleListProperties().SetEnableExternalLookup(false); + // There is no SB API for settings in general like: + // GetGlobalPluginProperties()->SetPacketTimeout(std::chrono::seconds(60)); + CommandReturnObject Result; + Dbg->GetCommandInterpreter().HandleCommand( + "settings set plugin.process.gdb-remote.packet-timeout 60", + /*add_to_history*/ eLazyBoolNo, Result); if (!opts::Log.empty()) Dbg->EnableLog("lldb", {"all"}, opts::Log, 0, errs());