<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/62068>62068</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            lldb: platform process launch command seems broken
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          rjmansfield
      </td>
    </tr>
</table>

<pre>
    
$ bin/lldb ~/a.out
(lldb) target create "/home/ryan_mansfield/a.out"
Current executable set to '/home/ryan_mansfield/a.out' (x86_64).
(lldb) platform process launch -s
error: Cannot launch '': Nothing to launch

Empty args passed to GDBRemoteCommunicationClient::LaunchProcess

(lldb) platform process launch -s
Process 33387 stopped
* thread #1, name = 'lldb', stop reason = breakpoint 1.1
    frame #0: 0x00007fffea812a83 liblldb.so.17git`lldb_private::process_gdb_remote::GDBRemoteCommunicationClient::LaunchProcess(this=0x0000000000b5b838, args=0x00007fffffffc298) at GDBRemoteCommunicationClient.cpp:764
   761  }
   762  
   763  llvm::Error GDBRemoteCommunicationClient::LaunchProcess(const Args &args) {
-> 764        if (!args.GetArgumentAtIndex(0))
   765      return llvm::createStringError(llvm::inconvertibleErrorCode(),
   766   "Nothing to launch");
   767    // try vRun first
(lldb) p args
(const lldb_private::Args) $0 = {
  m_entries = size=0 {}
  m_argv = size=1 {
    [0] = 0x0000000000000000
 }
}

This change in behaviour seems to have been introduced in D134754.

Reverting D134754 (8d1de7b34af46a089eb5433c700419ad9b2923ee)

(lldb) target create "/home/ryan_mansfield/a.out"
Current executable set to '/home/ryan_mansfield/a.out' (x86_64).
(lldb) b main
Breakpoint 1: where = a.out`main + 18 at hw.c:4:3, address = 0x00000000004004e2
(lldb) platform process launch -s
Process 33063 stopped
* thread #1, name = 'a.out', stop reason = signal SIGSTOP
    frame #0: 0x00007f4ae625e090 ld-2.27.so`_start
ld-2.27.so`_start:
->  0x7f4ae625e090 <+0>: movq %rsp, %rdi
    0x7f4ae625e093 <+3>: callq  0x7f4ae625eea0            ; _dl_start at rtld.c:444

ld-2.27.so`_dl_start_user:
 0x7f4ae625e098 <+0>: movq   %rax, %r12
    0x7f4ae625e09b <+3>: movl 0x228697(%rip), %eax      ; _dl_skip_args
(lldb) c
Process 33063 resuming
Process 33063 stopped

Appending the m_options.launch_info arguments seems to restore the behaviour.

e.g

diff --git a/lldb/source/Commands/CommandObjectPlatform.cpp b/lldb/source/Commands/CommandObjectPlatform.cpp
index 60d37121844b..accebaf02f6f 100644
--- a/lldb/source/Commands/CommandObjectPlatform.cpp
+++ b/lldb/source/Commands/CommandObjectPlatform.cpp
@@ -1210,8 +1210,10 @@ protected:
       if (m_options.launch_info.GetExecutableFile()) {
 Debugger &debugger = GetDebugger();
 
-        if (argc == 0)
- target->GetRunArguments(m_options.launch_info.GetArguments());
+ if (argc == 0) {
+ m_options.launch_info.GetArguments().AppendArguments(
+ target->GetProcessLaunchInfo().GetArguments());
+       }
 
 ProcessSP process_sp(platform_sp->DebugProcess(
 m_options.launch_info, debugger, *target, error));


(lldb) target create "/home/ryan_mansfield/a.out"
Current executable set to '/home/ryan_mansfield/a.out' (x86_64).
(lldb) platform process launch -s
Process 34236 stopped
* thread #1, name = 'a.out', stop reason = signal SIGSTOP
    frame #0: 0x00007fb85b864090 ld-2.27.so`_start
ld-2.27.so`_start:
->  0x7fb85b864090 <+0>: movq %rsp, %rdi
    0x7fb85b864093 <+3>: callq  0x7fb85b864ea0            ; _dl_start at rtld.c:444

ld-2.27.so`_dl_start_user:
 0x7fb85b864098 <+0>: movq   %rax, %r12
    0x7fb85b86409b <+3>: movl 0x228697(%rip), %eax      ; _dl_skip_args

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzUWFuP27YS_jX0y8ACRdK6PPjBl_UiwMFpkPTdoKSRzEaiVJJyN-fh_PYD6mY72SbdtAdFhYUskTPDb8jh91ErrVWVRtySzZ5sjivZu0trtuaXRmpbKqyLVdYWn7eEHgndESYgU5qwU10XGfyXsJMM2t7NvYlvJiwFJ02FDnKD0iEQxgg7XdoGCTuZz1Kfl-hLBMbGIIfeGNQO8AXz3smsRrDowLVAWPz9KDEQlrwk0TkShKXBV8C6WrqyNQ10ps3RWqhlr_MLrO1oisa0hvAdHKTWrZu7h7Fj3_7v1l2UrjygsW8aYrg_NZ37DNJUFjppLRbe7Pm4_4BN6_DQNk2vVS6davWhVqgd4TvCd_8aAr0fEd3HewPwyRs450kM1rVdh8UcZQfuYlAWQBgPCTuAlg0C4Uef2DhC7Ju9GxiUttVDb2ZQfupapR2EQThGAwAozeDPOPVTQl8opTQuyxJlEjKZcKhV5sMGtg3CuFKORNS_nzujrtLhmPaUybkqsrMZZmhsf-uEscRdlCX8OAIZr2yTJTzxSfnlWDo9Sn_lLE38tEr3zfUJ8q4jfBdHYkk-jkIgNCXx8a6JDU23d-7f6_rajHiffFW9uRBYkrfaOtj5eiIsGhJhKZB4Pw61JvwJ4kj4wUCVvvQJC71Z8IxuZ6q-Qe127p0u8IWwhBKW-r8bzs3gCgAGXW803CCPW_ejM0pXA_yhFudepfNWX9E4ldU4dB_aAofxU8IOdyNEwwiEsa83jmeFlPD9nXU84iHsRNgJnPkM1w-9hlIZ-zXJdOPSzs3jZH1dZrt52pigY83Hy5DNGbUzCu3QYdV_0FfKYHFb3-YsTXW9twjvYwCQzZ6SzXGwuK_B8ZrsloC3h-H-80VZyC9SVwhKQ4YXeVVtb8AiNtZP10VeETJEDUo70xZ9joU3PYZcxBsR3Ef7gMOq6Gru9UWRFGGBccaFLEUkaZJithGc5zGlIkxlkWYsZRxxqY1_Dp9n0Eilx-b9HVt5XvrtgmZkuTFYRL0tELaHMPE7__JbkBO-E4Tv-MAURWE8h365joJSgexPUDKN-JsoeU7-NU72ei1r-Pju-ePPP73_HicLiRHbIE0p1MWaBSwObEsierZOmmlLvdbBd3cUA_TlIRLhB8L2lPAnP1TTXn8FwjbGdh6vfyrUDdeDL598-eSby7r-9cEGJYW7i_A9nIt6ROXXzLi6GFdNiPtifUxi9jj3Fs2SzCOW5LU8YMAvX-ZMQvY7mWRfZNK01xroC2NJlMYDEW6M6kY69JFQvnyR0SfVnR8IbK6r_LXyMWj7Runq-6U13Hddh7oY-PaC0JzbzmuNDcYSPStdtp49B4GwN6oxaF1rcHBamOiBYDCo7l8LVZawXlfKgZyOhYSdbNub3G9rr3RSF_b2-FP2C-bu_bR1vL5C9oOOIwLlxQ0iWvA4ZGEiRBYEMs8xkyVlZVRCSGk018p6vf5hnPM67ce_PwmbCEoEhXXIQkrYIfG0ND2HFKbezrQOc4fFrYTHaxT7V5fVS__TQrYnVS-yfHdygCNmfVWh8eeKYnnmR3hGN_dNfotAT1MIDxikqXLvOHDmIiDrSTE8fTyj-9Dr-TRiv4X73mg6q8yj-xl_fcRbVt7mj8YOxh3y0LoEeQA_7bXxbPZOl-0U4Pt4pw2_nCSmnyngx_ezcJw9cyaznJxt50ceVuF2FJx8X03PU0yxLJqnm92YgX8Zv2i-APcPU_k_rLSC8ehvUtos2WRJJP4Cpb2L9GalXXy_obSTzf9daRcsP6S0i_dfrbSrYsuLlKdyhdswSkLGQ7Ghq8uWlXkso0xmaRSmQqRpnAuWpillSZmkAldqyyjjVIRhGAkR0qBIEiFDsRExjeUmE0RQbKSqA_-lFLSmWilre9xGjEbJqpYZ1nb-T4vZeqN11leWCFor6-zNzSlX43Yof7773fLPR4mZ5Dsz7SfUq97U24tznfWLMXxHVcpd-izI22ZQrOv8s-5M68WJsNMA06vWgPR_AQAA___9KFH7">