3131#include " Plugins/Process/gdb-remote/ProcessGDBRemoteLog.h"
3232#include " lldb/Host/ConnectionFileDescriptor.h"
3333#include " lldb/Host/HostGetOpt.h"
34+ #include " lldb/Host/HostInfo.h"
3435#include " lldb/Host/MainLoop.h"
3536#include " lldb/Host/OptionParser.h"
3637#include " lldb/Host/Socket.h"
@@ -256,8 +257,9 @@ static void client_handle(GDBRemoteCommunicationServerPlatform &platform,
256257 printf (" Disconnected.\n " );
257258}
258259
259- static Status spawn_process (const char *progname, const Socket *conn_socket,
260- uint16_t gdb_port, const lldb_private::Args &args,
260+ static Status spawn_process (const char *progname, const FileSpec &prog,
261+ const Socket *conn_socket, uint16_t gdb_port,
262+ const lldb_private::Args &args,
261263 const std::string &log_file,
262264 const StringRef log_channels, MainLoop &main_loop) {
263265 Status error;
@@ -267,9 +269,10 @@ static Status spawn_process(const char *progname, const Socket *conn_socket,
267269
268270 ProcessLaunchInfo launch_info;
269271
270- FileSpec self_spec (progname, FileSpec::Style::native );
271- launch_info.SetExecutableFile (self_spec, true );
272+ launch_info. SetExecutableFile (prog, false );
273+ launch_info.SetArg0 (progname );
272274 Args &self_args = launch_info.GetArguments ();
275+ self_args.AppendArgument (progname);
273276 self_args.AppendArgument (llvm::StringRef (" platform" ));
274277 self_args.AppendArgument (llvm::StringRef (" --child-platform-fd" ));
275278 self_args.AppendArgument (llvm::to_string (shared_socket.GetSendableFD ()));
@@ -551,9 +554,10 @@ int main_platform(int argc, char *argv[]) {
551554 log_channels, &main_loop,
552555 &platform_handles](std::unique_ptr<Socket> sock_up) {
553556 printf (" Connection established.\n " );
554- Status error = spawn_process (progname, sock_up.get (),
555- gdbserver_port, inferior_arguments,
556- log_file, log_channels, main_loop);
557+ Status error = spawn_process (
558+ progname, HostInfo::GetProgramFileSpec (), sock_up.get (),
559+ gdbserver_port, inferior_arguments, log_file, log_channels,
560+ main_loop);
557561 if (error.Fail ()) {
558562 Log *log = GetLog (LLDBLog::Platform);
559563 LLDB_LOGF (log, " spawn_process failed: %s" , error.AsCString ());
0 commit comments