<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Sep 19, 2017, at 1:49 PM, Tatyana Krasnukha <<a href="mailto:Tatyana.Krasnukha@synopsys.com" class="">Tatyana.Krasnukha@synopsys.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div style="" class=""><blockquote type="cite" style="font-family: Menlo-Regular; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">-----Original Message-----<br class="">From: Greg Clayton [<a href="mailto:clayborg@gmail.com" class="">mailto:clayborg@gmail.com</a>]<br class="">Sent: Tuesday, 19 September, 2017 9:48 PM<br class="">To: Tatyana Krasnukha <<a href="mailto:Tatyana.Krasnukha@synopsys.com" class="">Tatyana.Krasnukha@synopsys.com</a>><br class="">Cc: <a href="mailto:lldb-dev@lists.llvm.org" class="">lldb-dev@lists.llvm.org</a><br class="">Subject: Re: [lldb-dev] How can lldb debug a remote bare-metal platform?<br class=""><br class="">So the problem is bare boards have no dynamic loader. There is a<br class="">DynamicLoaderStatic which will load files at the address that they are<br class="">specified in the object files. When you load your ELF file using:<br class=""><br class="">(lldb) file /path/to/foo.elf<br class=""><br class="">What does:<br class=""><br class="">(lldb) target list<br class=""><br class="">show as the output? You might want to specify "none" for both the vendor<br class="">and OS in your target triple when creating your target:<br class=""><br class=""></blockquote><br style="font-family: Menlo-Regular; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Menlo-Regular; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">It shows just what expected: * target #0: xxx.elf ( arch=arc-*-*, platform=host )</span><br style="font-family: Menlo-Regular; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br style="font-family: Menlo-Regular; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><blockquote type="cite" style="font-family: Menlo-Regular; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">(lldb) file --arch armv7-none-none /path/to/foo.elf<br class=""><br class="">This specifies there is no vendor (first "none" in the triple) and no operating<br class="">system  (second "none" in the triple). The target's triple helps it select the<br class="">right plug-ins to use like the dynamic load plug-in (which tells LLDB where<br class="">sections from binaries got loaded), runtime plug-ins and much more.<br class=""><br class=""><br class="">So you might try:<br class=""><br class="">(lldb) target modules load --load --set-pc-to-entry --slide 0 --file<br class="">/path/to/foo.elf<br class=""></blockquote><br style="font-family: Menlo-Regular; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Menlo-Regular; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">----set-pc-to-entry, not --set-pc-to-entry. May by typo in sources.</span><br style="font-family: Menlo-Regular; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br style="font-family: Menlo-Regular; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Menlo-Regular; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">‘target modules load --load ----set-pc-to-entry --slide 0’ is enough, but just compare this text with ‘load’ in gdb… Looks like someone hates bare-metal developers))</span></div></div></blockquote><div><br class=""></div>As I said, we haven't done a lot of bare board development in LLDB as of yet.<br class=""><blockquote type="cite" class=""><div class=""><div style="" class=""><br style="font-family: Menlo-Regular; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><blockquote type="cite" style="font-family: Menlo-Regular; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class=""><br class="">Or, you can specify the addresses of all the sections using:<br class=""><br class="">(lldb) target modules load --load --set-pc-to-entry --file /path/to/foo.elf .text<br class="">0x1000 .data 0x2000 ....<br class=""></blockquote><br style="font-family: Menlo-Regular; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Menlo-Regular; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">This is a good feature, but again, how often is it needed comparing with simple load…</span><br style="font-family: Menlo-Regular; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""></div></div></blockquote><div><br class=""></div>This is mostly used when using LLDB for symbolication. On MacOSX, the crashlogs contains just the address of the .text segment as all other segments are not rigidly slid, so we often do:</div><div><br class=""></div><div>(lldb) image load --file a.out __TEXT 0x100203000</div><div><br class=""></div><div>So it isn't needed for baseboard, but is much more geared toward OSs running binaries that are dynamically loaded.</div><div><br class=""></div><div>As I said before, we will have some growing pains with LLDB and bard boards, but lets make a solution that works for everyone. I would be happy to accept patches that allows us to not have to specify "--slide 0" if there is no OS in the target triple. We could also do patches where if a module is written to memory, it invalidates any breakpoints for the module that was just loaded and rewrites them into memory.</div><div><br class=""><blockquote type="cite" class=""><div class=""><div style="" class=""><br style="font-family: Menlo-Regular; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><blockquote type="cite" style="font-family: Menlo-Regular; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class=""><br class="">This allows you to completely control where each section goes and possibly<br class="">skip other sections. It also informs LLDB that sections have been loaded at<br class="">specific addresses.<br class=""><br class="">FYI: We will have to tweak LLDB for baseboard support as it has been used bit<br class="">by a few folks (check the "svn blame" for who added the "--load" option and<br class="">possibly contact them) but I am sure it needs to be improved.<br class=""><br class="">So try specifying "--arch <arch>-none-none" and see where that gets you. It<br class="">should select the right dynamic loader plug-in for you.<br class=""><br class="">A bit more explanation about loading. LLDB has the notion of "file addresses"<br class="">and "load addresses". A file address is valid for one file only, and it is the<br class="">same as the addresses that are contained within the object file (ELF, Mach-O,<br class="">COFF). When breakpoints are set by file + line or by name, we resolve these<br class="">to "section .text + 100 in file foo.elf". Breakpoints can't be set until a section<br class="">has a "load address" which will tell us where each section actually is mapped<br class="">inside the process being debugged. For bare boards there is no dynamic<br class="">linker that tell us '".text" was loaded at address 0x1230000'. If the<br class="">DynamicLoaderStatic is selected for a target, which is done by having no OS in<br class="">the target triple for the target, it will set the load address for the sections to<br class="">match the "file addresses" and breakpoints will then be set. When a section<br class="">is "loaded", a message is sent around LLDB to indicate a section was loaded,<br class="">and all breakpoints will now be able to resolve themselves (get the "load<br class="">address" for each "file address" for each breakpoint) and they will be set in<br class="">the debugged process. Your extra step where you need LLDB to load your<br class="">ELF file is now in the mix as well.<br class=""><br class="">So I would recommend:<br class="">1 - create your target first:<br class="">   (lldb) file --arch armv7-none-none /path/to/foo.elf<br class="">2 - attach to the baseboard<br class="">   (lldb) gdb-remote ....<br class="">3 - load the file in memory<br class="">   (lldb) target modules load --load --set-pc-to-entry --slide 0 --file<br class="">/path/to/foo.elf<br class="">4 - set breakpoints now<br class="">   (lldb) breakpoint set ...<br class=""><br class=""></blockquote><br style="font-family: Menlo-Regular; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Menlo-Regular; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">Of course I used incorrect order of commands, I just wanted to note that ObjectFile::LoadInMemory should set error status when it cannot write memory.</span><br style="font-family: Menlo-Regular; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""></div></div></blockquote><div><br class=""></div>It should for sure. Feel free to submit any patches if this isn't happening. </div><div><br class=""><blockquote type="cite" class=""><div class=""><div style="" class=""><br style="font-family: Menlo-Regular; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><blockquote type="cite" style="font-family: Menlo-Regular; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class=""><br class="">Usually you can set the breakpoints before your attach, but in your case you<br class="">probably want to load the ELF file before you set breakpoints, otherwise you<br class="">might end up setting breakpoints as soon as the "gdb-remote ..." attach<br class="">happens since the DynamicLoaderStatic will correctly set the load addresses<br class="">of all your sections after attaching which will cause breakpoint to resolve and<br class="">attempt write traps to memory. Then if we load the ELF file in step #3 and<br class="">when it writes all of the ELF sections to memory it will overwrite the<br class="">breakpoint traps we set. So try the above flow and let us know how things<br class="">go.<br class=""><br class="">Greg Clayton<br class=""><br class=""><br class=""><br class=""><br class=""><span class="Apple-tab-span" style="white-space: pre;">       </span>On Sep 19, 2017, at 11:21 AM, Tatyana Krasnukha<br class=""><<a href="mailto:Tatyana.Krasnukha@synopsys.com" class="">Tatyana.Krasnukha@synopsys.com</a><br class=""><<a href="mailto:Tatyana.Krasnukha@synopsys.com" class="">mailto:Tatyana.Krasnukha@synopsys.com</a>> > wrote:<br class=""><br class=""><span class="Apple-tab-span" style="white-space: pre;">  </span>Hello,<br class=""><br class=""><span class="Apple-tab-span" style="white-space: pre;">  </span>‘target modules load -lp’  fails with error “one or more section name<br class="">+ load address pair must be specified”, works only with --slide option.<br class=""><br class=""><span class="Apple-tab-span" style="white-space: pre;">  </span>Another issue is that if breakpoint is set, Process::WriteMemory<br class="">return zero and ObjectFile::LoadInMemory interprets it as an error without<br class="">setting appropriate status. Thus, user sees nothing in output as if command<br class="">succeeds.<br class=""><br class=""><span class="Apple-tab-span" style="white-space: pre;">   </span>Thanks,<br class=""><span class="Apple-tab-span" style="white-space: pre;">      </span>Tatyana<br class=""><br class=""><span class="Apple-tab-span" style="white-space: pre;"> </span>From: lldb-dev [<a href="mailto:lldb-dev-bounces@lists.llvm.org" class="">mailto:lldb-dev-bounces@lists.llvm.org</a>] On Behalf Of<br class="">Greg Clayton via lldb-dev<br class=""><span class="Apple-tab-span" style="white-space: pre;">     </span>Sent: Tuesday, 19 September, 2017 6:06 PM<br class=""><span class="Apple-tab-span" style="white-space: pre;">    </span>To: cui bixiong <<a href="mailto:cuibixiong@gmail.com" class="">cuibixiong@gmail.com</a><br class=""><<a href="mailto:cuibixiong@gmail.com" class="">mailto:cuibixiong@gmail.com</a>> ><br class=""><span class="Apple-tab-span" style="white-space: pre;">  </span>Cc:<span class="Apple-converted-space"> </span><a href="mailto:lldb-dev@lists.llvm.org" class="">lldb-dev@lists.llvm.org</a><span class="Apple-converted-space"> </span><<a href="mailto:lldb-dev@lists.llvm.org" class="">mailto:lldb-dev@lists.llvm.org</a>><br class=""><span class="Apple-tab-span" style="white-space: pre;">   </span>Subject: Re: [lldb-dev] How can lldb debug a remote bare-metal<br class="">platform?<br class=""><br class=""><span class="Apple-tab-span" style="white-space: pre;">    </span>Load like "target modules load" has a --load option that will load the<br class="">ELF into memory. I think it should do what you want. Let me know how it<br class="">goes.<br class=""><br class=""><span class="Apple-tab-span" style="white-space: pre;">  </span>Greg Clayton<br class=""><br class=""><br class=""><span class="Apple-tab-span" style="white-space: pre;">       </span><span class="Apple-tab-span" style="white-space: pre;">  </span>On Sep 18, 2017, at 9:58 PM, cui bixiong<br class=""><<a href="mailto:cuibixiong@gmail.com" class="">cuibixiong@gmail.com</a><span class="Apple-converted-space"> </span><<a href="mailto:cuibixiong@gmail.com" class="">mailto:cuibixiong@gmail.com</a>> > wrote:<br class=""><br class=""><span class="Apple-tab-span" style="white-space: pre;">       </span><span class="Apple-tab-span" style="white-space: pre;">  </span>Hi Greg:<br class=""><br class=""><span class="Apple-tab-span" style="white-space: pre;">        </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-converted-space"> </span>   It's worked, thank you!, but I still have a question, in GNU-<br class="">GDB which provide `load` command to download a ELF file into bare-board, in<br class="">LLDB support those features? should I dump a binary file and use lldb "target<br class="">module load" to replace 'load' command?<br class=""><br class=""><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span>​Best Regards<br class=""><span class="Apple-tab-span" style="white-space: pre;">      </span><span class="Apple-tab-span" style="white-space: pre;">  </span>--cuibixiong​<br class=""><br class=""><br class=""><span class="Apple-tab-span" style="white-space: pre;">    </span><span class="Apple-tab-span" style="white-space: pre;">  </span>2017-09-18 23:53 GMT+08:00 Greg Clayton<br class=""><<a href="mailto:clayborg@gmail.com" class="">clayborg@gmail.com</a><span class="Apple-converted-space"> </span><<a href="mailto:clayborg@gmail.com" class="">mailto:clayborg@gmail.com</a>> >:<br class=""><br class=""><span class="Apple-tab-span" style="white-space: pre;">      </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span>So when launching a GDB server there are two flows:<br class=""><br class=""><span class="Apple-tab-span" style="white-space: pre;">     </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span>1 - When you connect you already have a process<br class=""><span class="Apple-tab-span" style="white-space: pre;">      </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span>2 - You will connect, then launch or attach to a<br class="">process<br class=""><br class=""><span class="Apple-tab-span" style="white-space: pre;">    </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span>LLDB tries to see if there is a process by sending the<br class="">"qfThreadInfo" packet. As you see below, it responds with on character "l"<br class="">which means  "end of the thread list". Since no thread IDs were returned,<br class="">this makes LLDB believe that there is no process on the other end. So later<br class="">when you try to say "process launch", it tries to send the "A" packet which<br class="">tries to launch your program by sending the name of the process file to<br class="">launch.<br class=""><br class=""><span class="Apple-tab-span" style="white-space: pre;">      </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span>There was recently an OpenOCD patch to work<br class="">around this with:<br class=""><br class=""><span class="Apple-tab-span" style="white-space: pre;">       </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><a href="https://reviews.llvm.org/D37934" class="">https://reviews.llvm.org/D37934</a><br class=""><<a href="https://urldefense.proofpoint.com/v2/url?u=https-" class="">https://urldefense.proofpoint.com/v2/url?u=https-</a><br class="">3A__reviews.llvm.org_D37934&d=DwMFaQ&c=DPL6_X_6JkXFx7AXWqB0tg&<br class="">r=yfnu24japkhNGh-<br class="">WqJObHXmH3mINtC_2FO828lrNpM0&m=s1muy0YuwDDElPQxgJ6vznc3dDBx<br class="">kqEqdNbw6v9MesM&s=5prvINiyVrMl8bpYzRwFlVWxIlsjH79K0W9MyCGhDu<br class="">M&e=><br class=""><br class=""><span class="Apple-tab-span" style="white-space: pre;">        </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span>This fixed this issue and also made it read both sets of<br class="">registers via the XML target packets.<br class=""><br class=""><span class="Apple-tab-span" style="white-space: pre;">      </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span>That should make things work, but it would be better<br class="">if we modified the OpenOCD GDB server to respond with a thread ID when<br class="">asked about its thread with the "qfThreadInfo" packet. Since it is a bare<br class="">board connection, it should respond with "1" (one) to the "qfThreadInfo"<br class="">packet followed by "l" to the next ThreadInfo packet (read GDB protocol<br class="">docs on this.<br class=""><br class=""><span class="Apple-tab-span" style="white-space: pre;">        </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span>Let me know if the patch mentioned above (which is<br class="">already checked in) fixed your issues.<br class=""><br class=""><br class=""><br class=""><br class=""><span class="Apple-tab-span" style="white-space: pre;">    </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span>On Sep 17, 2017, at 3:50 AM, cui bixiong via<br class="">lldb-dev <<a href="mailto:lldb-dev@lists.llvm.org" class="">lldb-dev@lists.llvm.org</a><span class="Apple-converted-space"> </span><<a href="mailto:lldb-dev@lists.llvm.org" class="">mailto:lldb-dev@lists.llvm.org</a>> > wrote:<br class=""><br class=""><span class="Apple-tab-span" style="white-space: pre;">      </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span>Hi:<br class=""><br class=""><span class="Apple-tab-span" style="white-space: pre;">   </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-converted-space"> </span>   Currently I porting lldb for Hifive1 (riscv<br class="">bare board) w/ openocd 0.10.0, but it always show "error: Process must be<br class="">launched."<br class=""><br class=""><span class="Apple-tab-span" style="white-space: pre;">     </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-converted-space"> </span>   I use GNU gdb to remote connect and<br class="">debugging w/ the same openocd + elf, it work OK.<br class=""><br class=""><span class="Apple-tab-span" style="white-space: pre;">       </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-converted-space"> </span>   I want to know how to launch Process in<br class="">bare board?<br class=""><br class=""><span class="Apple-tab-span" style="white-space: pre;">        </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-converted-space"> </span>   thanks a lot!<br class=""><br class=""><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span>$ lldb<br class=""><span class="Apple-tab-span" style="white-space: pre;">       </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span>(lldb) log enable gdb-remote packets<br class=""><span class="Apple-tab-span" style="white-space: pre;"> </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span>(lldb) target create Build3/riscv-hello.elf<br class=""><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span>Current executable set to 'Build3/riscv-<br class="">hello.elf' (riscv).<br class=""><span class="Apple-tab-span" style="white-space: pre;">     </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span>(lldb) gdb-remote 172.27.113.29:3333<br class=""><<a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__172.27.113.29-" class="">https://urldefense.proofpoint.com/v2/url?u=http-3A__172.27.113.29-</a><br class="">3A3333_&d=DwMFaQ&c=DPL6_X_6JkXFx7AXWqB0tg&r=yfnu24japkhNGh-<br class="">WqJObHXmH3mINtC_2FO828lrNpM0&m=s1muy0YuwDDElPQxgJ6vznc3dDBx<br class="">kqEqdNbw6v9MesM&s=VOu2PpXUGoyMKI8l3ZgwFP5o1vdRygwBr4rzl-<br class="">CmFX0&e=><br class=""><span class="Apple-tab-span" style="white-space: pre;">      </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><   1> send ack packet: +<br class=""><span class="Apple-tab-span" style="white-space: pre;">    </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span>history[1] tid=0x44c8 <   1> send packet: +<br class=""><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><   1> read packet: +<br class=""><span class="Apple-tab-span" style="white-space: pre;">        </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><  19> send SendPacketNoLock 2 packet:<br class="">$QStartNoAckMode#b0<br class=""><span class="Apple-tab-span" style="white-space: pre;">    </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><   1> read packet: +<br class=""><span class="Apple-tab-span" style="white-space: pre;">        </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><   6> read packet: $OK#9a<br class=""><span class="Apple-tab-span" style="white-space: pre;">   </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><   1> send ack packet: +<br class=""><span class="Apple-tab-span" style="white-space: pre;">    </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><  41> send SendPacketNoLock 2 packet:<br class="">$qSupported:xmlRegisters=i386,arm,mips#12<br class=""><span class="Apple-tab-span" style="white-space: pre;">      </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><  80> read packet:<br class="">$PacketSize=3fff;qXfer:memory-map:read+;qXfer:features:read-<br class="">;QStartNoAckMode+#08<br class=""><span class="Apple-tab-span" style="white-space: pre;">     </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><  26> send SendPacketNoLock 2 packet:<br class="">$QThreadSuffixSupported#e4<br class=""><span class="Apple-tab-span" style="white-space: pre;">     </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><   4> read packet: $#00<br class=""><span class="Apple-tab-span" style="white-space: pre;">     </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><  27> send SendPacketNoLock 2 packet:<br class="">$QListThreadsInStopReply#21<br class=""><span class="Apple-tab-span" style="white-space: pre;">    </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><   4> read packet: $#00<br class=""><span class="Apple-tab-span" style="white-space: pre;">     </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><  13> send SendPacketNoLock 2 packet:<br class="">$qHostInfo#9b<br class=""><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><   4> read packet: $#00<br class=""><span class="Apple-tab-span" style="white-space: pre;">     </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><  10> send SendPacketNoLock 2 packet:<br class="">$vCont?#49<br class=""><span class="Apple-tab-span" style="white-space: pre;">     </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><   4> read packet: $#00<br class=""><span class="Apple-tab-span" style="white-space: pre;">     </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><  27> send SendPacketNoLock 2 packet:<br class="">$qVAttachOrWaitSupported#38<br class=""><span class="Apple-tab-span" style="white-space: pre;">    </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><   4> read packet: $#00<br class=""><span class="Apple-tab-span" style="white-space: pre;">     </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><  16> send SendPacketNoLock 2 packet:<br class="">$qProcessInfo#dc<br class=""><span class="Apple-tab-span" style="white-space: pre;">       </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><   4> read packet: $#00<br class=""><span class="Apple-tab-span" style="white-space: pre;">     </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><   6> send SendPacketNoLock 2 packet:<br class="">$qC#b4<br class=""><span class="Apple-tab-span" style="white-space: pre;">    </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><   7> read packet: $QC0#c4<br class=""><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><  16> send SendPacketNoLock 2 packet:<br class="">$qfThreadInfo#bb<br class=""><span class="Apple-tab-span" style="white-space: pre;">       </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><   5> read packet: $l#6c<br class=""><span class="Apple-tab-span" style="white-space: pre;">    </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span>(lldb) thread list<br class=""><span class="Apple-tab-span" style="white-space: pre;">   </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span>error: Process must be launched.<br class=""><span class="Apple-tab-span" style="white-space: pre;">     </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span>(lldb) b main<br class=""><span class="Apple-tab-span" style="white-space: pre;">        </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span>Breakpoint 1: where = riscv-hello.elf`main at<br class="">hello.c:3, address = 0x20400230<br class=""><span class="Apple-tab-span" style="white-space: pre;">    </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span>(lldb) thread continue<br class=""><span class="Apple-tab-span" style="white-space: pre;">       </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span>error: invalid thread<br class=""><span class="Apple-tab-span" style="white-space: pre;">        </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span>(lldb) process launch<br class=""><span class="Apple-tab-span" style="white-space: pre;">        </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><  38> send SendPacketNoLock 2 packet:<br class="">$QSetSTDIN:2f6465762f7074732f343238#b6<br class=""><span class="Apple-tab-span" style="white-space: pre;"> </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><   4> read packet: $#00<br class=""><span class="Apple-tab-span" style="white-space: pre;">     </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><  39> send SendPacketNoLock 2 packet:<br class="">$QSetSTDOUT:2f6465762f7074732f343238#17<br class=""><span class="Apple-tab-span" style="white-space: pre;">        </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><   4> read packet: $#00<br class=""><span class="Apple-tab-span" style="white-space: pre;">     </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><  39> send SendPacketNoLock 2 packet:<br class="">$QSetSTDERR:2f6465762f7074732f343238#08<br class=""><span class="Apple-tab-span" style="white-space: pre;">        </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><   4> read packet: $#00<br class=""><span class="Apple-tab-span" style="white-space: pre;">     </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><  21> send SendPacketNoLock 2 packet:<br class="">$QSetDisableASLR:1#ce<br class=""><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><   4> read packet: $#00<br class=""><span class="Apple-tab-span" style="white-space: pre;">     </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><  23> send SendPacketNoLock 2 packet:<br class="">$QSetDetachOnError:1#f8<br class=""><span class="Apple-tab-span" style="white-space: pre;">        </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><   4> read packet: $#00<br class=""><span class="Apple-tab-span" style="white-space: pre;">     </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><  21> send SendPacketNoLock 2 packet:<br class="">$QLaunchArch:riscv#8b<br class=""><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><   4> read packet: $#00<br class=""><span class="Apple-tab-span" style="white-space: pre;">     </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><  33> send SendPacketNoLock 2 packet:<br class="">$QEnvironment:BINARY_TYPE_HPC=#fd<br class=""><span class="Apple-tab-span" style="white-space: pre;">      </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><   4> read packet: $#00<br class=""><span class="Apple-tab-span" style="white-space: pre;">     </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span>< 115> send SendPacketNoLock 2 packet:<br class="">$A104,0,2f70726f6a2f6d746b31333836372f727369632d762f74657374696e672f<br class="">4275696c64332f72697363762d68656c6c6f2e656c66#6c<br class=""><span class="Apple-tab-span" style="white-space: pre;">    </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><   4> read packet: $#00<br class=""><span class="Apple-tab-span" style="white-space: pre;">     </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span>error: process launch failed: 'A' packet<br class="">returned an error: -1<br class=""><br class=""><br class=""><br class=""><span class="Apple-tab-span" style="white-space: pre;">    </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span>Best Regards<br class=""><span class="Apple-tab-span" style="white-space: pre;"> </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span>--cuibixiong<br class=""><br class=""><span class="Apple-tab-span" style="white-space: pre;">    </span>_______________________________________________<br class=""><span class="Apple-tab-span" style="white-space: pre;">      </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span>lldb-dev mailing list<br class=""><span class="Apple-tab-span" style="white-space: pre;">        </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><a href="mailto:lldb-dev@lists.llvm.org" class="">lldb-dev@lists.llvm.org</a><span class="Apple-converted-space"> </span><mailto:lldb-<br class=""><a href="mailto:dev@lists.llvm.org" class="">dev@lists.llvm.org</a>><br class=""><span class="Apple-tab-span" style="white-space: pre;">     </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><span class="Apple-tab-span" style="white-space: pre;">  </span><a href="http://lists.llvm.org/cgi-" class="">http://lists.llvm.org/cgi-</a><br class="">bin/mailman/listinfo/lldb-dev<br class=""><<a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.llvm.org_cgi-" class="">https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.llvm.org_cgi-</a><br class="">2Dbin_mailman_listinfo_lldb-<br class="">2Ddev&d=DwMFaQ&c=DPL6_X_6JkXFx7AXWqB0tg&r=yfnu24japkhNGh-<br class="">WqJObHXmH3mINtC_2FO828lrNpM0&m=s1muy0YuwDDElPQxgJ6vznc3dDBx<br class="">kqEqdNbw6v9MesM&s=Yl9wZ2nbojjqtk8CUuyh6ANapwgmBwf8jEC0CFcmG<br class="">Nk&e=></blockquote></div></div></blockquote></div><br class=""></body></html>