diff --git a/lldb/include/lldb/Utility/GPUGDBRemotePackets.h b/lldb/include/lldb/Utility/GPUGDBRemotePackets.h index 7826f3b566d96..9561b8b4d5f81 100644 --- a/lldb/include/lldb/Utility/GPUGDBRemotePackets.h +++ b/lldb/include/lldb/Utility/GPUGDBRemotePackets.h @@ -122,6 +122,8 @@ struct GPUPluginConnectionInfo { std::optional triple; /// The connection URL to use with "process connect ". std::string connect_url; + /// Synchronously wait for the GPU to initialize when connecting. + bool synchronous = false; }; bool fromJSON(const llvm::json::Value &value, GPUPluginConnectionInfo &data, diff --git a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp index 478b56f0fb9cd..fab4b0286b28a 100644 --- a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp +++ b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp @@ -976,11 +976,14 @@ Status ProcessGDBRemote::HandleConnectionRequest(const GPUActions &gpu_action) { return Status::FromErrorString("invalid platform for target needed for " "connecting to process"); - // We wait for the process to fully stop before we can query or alter it via - // GPUActions. - ProcessSP process_sp = platform_sp->ConnectProcessSynchronous( - connection_info.connect_url, GetPluginNameStatic(), debugger, - *debugger.GetAsyncOutputStream(), gpu_target_sp.get(), error); + ProcessSP process_sp = + gpu_action.connect_info->synchronous + ? platform_sp->ConnectProcessSynchronous( + connection_info.connect_url, GetPluginNameStatic(), debugger, + *debugger.GetAsyncOutputStream(), gpu_target_sp.get(), error) + : platform_sp->ConnectProcess(connection_info.connect_url, + GetPluginNameStatic(), debugger, + gpu_target_sp.get(), error); if (error.Fail()) return error; if (!process_sp) diff --git a/lldb/tools/lldb-server/Plugins/AMDGPU/LLDBServerPluginAMDGPU.cpp b/lldb/tools/lldb-server/Plugins/AMDGPU/LLDBServerPluginAMDGPU.cpp index 8c9fbd1b38a18..5839badfca41c 100644 --- a/lldb/tools/lldb-server/Plugins/AMDGPU/LLDBServerPluginAMDGPU.cpp +++ b/lldb/tools/lldb-server/Plugins/AMDGPU/LLDBServerPluginAMDGPU.cpp @@ -386,6 +386,7 @@ std::optional LLDBServerPluginAMDGPU::NativeProcessIsStopping() { "launched successfully"); } actions.connect_info = CreateConnection(); + actions.connect_info->synchronous = true; } return actions; } else {