Load like "target modules load" has a --load option that will load the ELF into memory. I think it should do what you want. Let me know how it goes.
Greg Clayton > On Sep 18, 2017, at 9:58 PM, cui bixiong <cuibixi...@gmail.com> wrote: > > Hi Greg: > > 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? > > Best Regards > --cuibixiong > > > 2017-09-18 23:53 GMT+08:00 Greg Clayton <clayb...@gmail.com > <mailto:clayb...@gmail.com>>: > So when launching a GDB server there are two flows: > > 1 - When you connect you already have a process > 2 - You will connect, then launch or attach to a process > > 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. > > There was recently an OpenOCD patch to work around this with: > > https://reviews.llvm.org/D37934 <https://reviews.llvm.org/D37934> > > This fixed this issue and also made it read both sets of registers via the > XML target packets. > > 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. > > Let me know if the patch mentioned above (which is already checked in) fixed > your issues. > > > >> On Sep 17, 2017, at 3:50 AM, cui bixiong via lldb-dev >> <lldb-dev@lists.llvm.org <mailto:lldb-dev@lists.llvm.org>> wrote: >> >> Hi: >> >> Currently I porting lldb for Hifive1 (riscv bare board) w/ openocd >> 0.10.0, but it always show "error: Process must be launched." >> >> I use GNU gdb to remote connect and debugging w/ the same openocd + elf, >> it work OK. >> >> I want to know how to launch Process in bare board? >> >> thanks a lot! >> >> $ lldb >> (lldb) log enable gdb-remote packets >> (lldb) target create Build3/riscv-hello.elf >> Current executable set to 'Build3/riscv-hello.elf' (riscv). >> (lldb) gdb-remote 172.27.113.29:3333 <http://172.27.113.29:3333/> >> < 1> send ack packet: + >> history[1] tid=0x44c8 < 1> send packet: + >> < 1> read packet: + >> < 19> send SendPacketNoLock 2 packet: $QStartNoAckMode#b0 >> < 1> read packet: + >> < 6> read packet: $OK#9a >> < 1> send ack packet: + >> < 41> send SendPacketNoLock 2 packet: >> $qSupported:xmlRegisters=i386,arm,mips#12 >> < 80> read packet: >> $PacketSize=3fff;qXfer:memory-map:read+;qXfer:features:read-;QStartNoAckMode+#08 >> < 26> send SendPacketNoLock 2 packet: $QThreadSuffixSupported#e4 >> < 4> read packet: $#00 >> < 27> send SendPacketNoLock 2 packet: $QListThreadsInStopReply#21 >> < 4> read packet: $#00 >> < 13> send SendPacketNoLock 2 packet: $qHostInfo#9b >> < 4> read packet: $#00 >> < 10> send SendPacketNoLock 2 packet: $vCont?#49 >> < 4> read packet: $#00 >> < 27> send SendPacketNoLock 2 packet: $qVAttachOrWaitSupported#38 >> < 4> read packet: $#00 >> < 16> send SendPacketNoLock 2 packet: $qProcessInfo#dc >> < 4> read packet: $#00 >> < 6> send SendPacketNoLock 2 packet: $qC#b4 >> < 7> read packet: $QC0#c4 >> < 16> send SendPacketNoLock 2 packet: $qfThreadInfo#bb >> < 5> read packet: $l#6c >> (lldb) thread list >> error: Process must be launched. >> (lldb) b main >> Breakpoint 1: where = riscv-hello.elf`main at hello.c:3, address = 0x20400230 >> (lldb) thread continue >> error: invalid thread >> (lldb) process launch >> < 38> send SendPacketNoLock 2 packet: $QSetSTDIN:2f6465762f7074732f343238#b6 >> < 4> read packet: $#00 >> < 39> send SendPacketNoLock 2 packet: >> $QSetSTDOUT:2f6465762f7074732f343238#17 >> < 4> read packet: $#00 >> < 39> send SendPacketNoLock 2 packet: >> $QSetSTDERR:2f6465762f7074732f343238#08 >> < 4> read packet: $#00 >> < 21> send SendPacketNoLock 2 packet: $QSetDisableASLR:1#ce >> < 4> read packet: $#00 >> < 23> send SendPacketNoLock 2 packet: $QSetDetachOnError:1#f8 >> < 4> read packet: $#00 >> < 21> send SendPacketNoLock 2 packet: $QLaunchArch:riscv#8b >> < 4> read packet: $#00 >> < 33> send SendPacketNoLock 2 packet: $QEnvironment:BINARY_TYPE_HPC=#fd >> < 4> read packet: $#00 >> < 115> send SendPacketNoLock 2 packet: >> $A104,0,2f70726f6a2f6d746b31333836372f727369632d762f74657374696e672f4275696c64332f72697363762d68656c6c6f2e656c66#6c >> < 4> read packet: $#00 >> error: process launch failed: 'A' packet returned an error: -1 >> >> >> >> Best Regards >> --cuibixiong >> _______________________________________________ >> lldb-dev mailing list >> lldb-dev@lists.llvm.org <mailto:lldb-dev@lists.llvm.org> >> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev >> <http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev> > >
_______________________________________________ lldb-dev mailing list lldb-dev@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev