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

Reply via email to