<div dir="ltr"><div class="gmail_default" style="font-size:small;color:rgb(0,0,0)"><font face="verdana, sans-serif">Hi Greg:</font></div><div class="gmail_default" style="font-size:small;color:rgb(0,0,0)"><font face="verdana, sans-serif">    </font></div><div class="gmail_default"><font face="verdana, sans-serif"><font color="#000000">    It's worked, thank you!, but I still have a question, in GNU-GDB which provide `load` command to download a ELF file into bare-board, in LLDB support those features? should I dump a binary file and use lldb "target module load" to replace 'load' command?</font></font></div><div class="gmail_extra"><font face="verdana, sans-serif"><br></font></div><div class="gmail_extra"><div class="gmail_default" style="font-size:small;color:rgb(0,0,0)"><font face="verdana, sans-serif">​Best Regards</font></div><div class="gmail_default" style="font-size:small;color:rgb(0,0,0)"><font face="verdana, sans-serif">--cuibixiong​</font></div><br></div><div class="gmail_extra"><br><div class="gmail_quote">2017-09-18 23:53 GMT+08:00 Greg Clayton <span dir="ltr"><<a href="mailto:clayborg@gmail.com" target="_blank">clayborg@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">So when launching a GDB server there are two flows:<div><br></div><div>1 - When you connect you already have a process</div><div>2 - You will connect, then launch or attach to a process</div><div><br></div><div>LLDB tries to see if there is a process by sending the "qfThreadInfo" packet. As you see below, it responds with on character "l" which means  "end of the thread list". Since no thread IDs were returned, this makes LLDB believe that there is no process on the other end. So later when you try to say "process launch", it tries to send the "A" packet which tries to launch your program by sending the name of the process file to launch.</div><div><br></div><div>There was recently an OpenOCD patch to work around this with:</div><div><br></div><div><a href="https://reviews.llvm.org/D37934" target="_blank">https://reviews.llvm.org/D3793<wbr>4</a></div><div><br></div><div>This fixed this issue and also made it read both sets of registers via the XML target packets.</div><div><br></div><div>That should make things work, but it would be better if we modified the OpenOCD GDB server to respond with a thread ID when asked about its thread with the "qfThreadInfo" packet. Since it is a bare board connection, it should respond with "1" (one) to the "qfThreadInfo" packet followed by "l" to the next ThreadInfo packet (read GDB protocol docs on this.</div><div><br></div><div>Let me know if the patch mentioned above (which is already checked in) fixed your issues.</div><div><br></div><div><br></div><div><br><div><blockquote type="cite"><div>On Sep 17, 2017, at 3:50 AM, cui bixiong via lldb-dev <<a href="mailto:lldb-dev@lists.llvm.org" target="_blank">lldb-dev@lists.llvm.org</a>> wrote:</div><br class="m_8662915467734485249m_-3776728406202037678Apple-interchange-newline"><div><div dir="ltr"><div style="font-family:simsun,serif;font-size:small"><div style="font-family:arial,sans-serif"><font face="verdana, sans-serif">Hi:</font></div><div style="font-family:arial,sans-serif"><font face="verdana, sans-serif"><br></font></div><div style="font-family:arial,sans-serif"><font face="verdana, sans-serif">    Currently I porting lldb for Hifive1 (riscv bare board) w/ openocd 0.10.0, but it always show "error: Process must be launched."</font></div><div style="font-family:arial,sans-serif"><font face="verdana, sans-serif"><br></font></div><div style="font-family:arial,sans-serif"><font face="verdana, sans-serif">    I use GNU gdb to remote connect and debugging w/ the same openocd + elf, it work OK.</font></div><div style="font-family:arial,sans-serif"><font face="verdana, sans-serif"> </font></div><div style="font-family:arial,sans-serif"><font face="verdana, sans-serif">    I want to know how to launch Process in bare board?</font></div><div style="font-family:arial,sans-serif"><font face="verdana, sans-serif"><br></font></div><div style="font-family:arial,sans-serif"><font face="verdana, sans-serif">    thanks a lot!</font></div><div style="font-family:arial,sans-serif"><font face="verdana, sans-serif"><br></font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif">$ lldb</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif">(lldb) log enable gdb-remote packets</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif">(lldb) target create Build3/riscv-hello.elf</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif">Current executable set to 'Build3/riscv-hello.elf' (riscv).</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif">(lldb) gdb-remote <a href="http://172.27.113.29:3333/" target="_blank">172.27.113.29:3333</a></font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif"><   1> send ack packet: +</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif">history[1] tid=0x44c8 <   1> send packet: +</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif"><   1> read packet: +</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif"><  19> send SendPacketNoLock 2 packet: $QStartNoAckMode#b0</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif"><   1> read packet: +</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif"><   6> read packet: $OK#9a</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif"><   1> send ack packet: +</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif"><  41> send SendPacketNoLock 2 packet: $qSupported:xmlRegisters=i386,<wbr>arm,mips#12</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif"><  80> read packet: $PacketSize=3fff;qXfer:memory-<wbr>map:read+;qXfer:features:read-<wbr>;QStartNoAckMode+#08</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif"><  26> send SendPacketNoLock 2 packet: $QThreadSuffixSupported#e4</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif"><   4> read packet: $#00</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif"><  27> send SendPacketNoLock 2 packet: $QListThreadsInStopReply#21</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif"><   4> read packet: $#00</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif"><  13> send SendPacketNoLock 2 packet: $qHostInfo#9b</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif"><   4> read packet: $#00</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif"><  10> send SendPacketNoLock 2 packet: $vCont?#49</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif"><   4> read packet: $#00</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif"><  27> send SendPacketNoLock 2 packet: $qVAttachOrWaitSupported#38</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif"><   4> read packet: $#00</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif"><  16> send SendPacketNoLock 2 packet: $qProcessInfo#dc</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif"><   4> read packet: $#00</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif"><   6> send SendPacketNoLock 2 packet: $qC#b4</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif"><   7> read packet: $QC0#c4</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif"><  16> send SendPacketNoLock 2 packet: $qfThreadInfo#bb</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif"><   5> read packet: $l#6c</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif">(lldb) thread list</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif">error: Process must be launched.</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif">(lldb) b main</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif">Breakpoint 1: where = riscv-hello.elf`main at hello.c:3, address = 0x20400230</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif">(lldb) thread continue</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif">error: invalid thread</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif">(lldb) process launch</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif"><  38> send SendPacketNoLock 2 packet: $QSetSTDIN:2f6465762f7074732f3<wbr>43238#b6</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif"><   4> read packet: $#00</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif"><  39> send SendPacketNoLock 2 packet: $QSetSTDOUT:2f6465762f7074732f<wbr>343238#17</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif"><   4> read packet: $#00</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif"><  39> send SendPacketNoLock 2 packet: $QSetSTDERR:2f6465762f7074732f<wbr>343238#08</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif"><   4> read packet: $#00</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif"><  21> send SendPacketNoLock 2 packet: $QSetDisableASLR:1#ce</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif"><   4> read packet: $#00</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif"><  23> send SendPacketNoLock 2 packet: $QSetDetachOnError:1#f8</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif"><   4> read packet: $#00</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif"><  21> send SendPacketNoLock 2 packet: $QLaunchArch:riscv#8b</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif"><   4> read packet: $#00</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif"><  33> send SendPacketNoLock 2 packet: $QEnvironment:BINARY_TYPE_HPC=<wbr>#fd</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif"><   4> read packet: $#00</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif">< 115> send SendPacketNoLock 2 packet: $A104,0,2f70726f6a2f6d746b3133<wbr>3836372f727369632d762f74657374<wbr>696e672f4275696c64332f72697363<wbr>762d68656c6c6f2e656c66#6c</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif"><   4> read packet: $#00</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><font face="verdana, sans-serif">error: process launch failed: 'A' packet returned an error: -1</font></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:14px"><br></div><div style="font-family:arial,sans-serif;font-size:14px"><br></div><div style="font-family:arial,sans-serif"><font face="verdana, sans-serif"><br></font></div><div style="font-family:arial,sans-serif"><font face="verdana, sans-serif">Best Regards</font></div><div style="font-family:arial,sans-serif"><font face="verdana, sans-serif">--cuibixiong</font></div></div></div>
______________________________<wbr>_________________<br>lldb-dev mailing list<br><a href="mailto:lldb-dev@lists.llvm.org" target="_blank">lldb-dev@lists.llvm.org</a><br><a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/lldb-dev</a><br></div></blockquote></div><br></div></div></blockquote></div><br></div></div>