On Nov 18, 2013, at 8:40 PM, Todd Fiala <[email protected]> wrote:

> Hi all!
> 
> I'm starting up an effort to get LLDB running on Android.  I just wanted to 
> reach out, say hi, and give you an outline of how I'm thinking about 
> attacking this effort.  I'm looking for feedback, so please fire away if you 
> have any suggestions or comments!
> 
>  I'm thinking of attacking the effort in stages, looking something like this:
> 
> 1. Get LLDB up and running against a local Linux x86 process. 
> 
>  It looks like many aspects of this already work.  I've heard there might be 
> some rough edges around core dump support, DWARF 4/5 support, and possibly 
> some optimized debug info support on the clang side, so any work here might 
> touch those areas.
> 
> I see we have what looks like 2 buildbots dedicated to building lldb in linux 
> scenarios:
> 
> http://lab.llvm.org:8011/builders/lldb-x86_64-debian-clang
> http://lab.llvm.org:8011/builders/lldb-x86_64-linux
> 
> Android currently builds linux host tools as 32-bit.  Both of those buildbots 
> above appear to be 64-bit. I'd love to get the equivalent of an Ubuntu 12.04 
> LTS x64 buildbot building a 32-bit LLDB executable.  How can I go about 
> setting that up?   

I believe Matt Kopec covered this already.

> 
> 2. Get the LLDB remote solution up and running against a remote Linux x86 
> process.  
> 
> Here we get to the first high-level question mark: do we continue to use 
> gdbserver, use debugserver, or base something on lldb-platform?  I haven't 
> dug into this yet.  I've heard some thoughts on this topic, such as (a) LLDB 
> has extended the gdb remote protocol and offers some benefits over using 
> gdbserver, (b) debugserver is currently very part-specific and might be a 
> painful way to go in the short term (but I haven't heard comments on the 
> longer-term potential benefits of toughing through that), and (c) 
> lldb-platform is a reasonable starting point and has been used to get some 
> traction bringing up LLDB on other chipsets.  Like in (1), I'll want to set 
> up a build bot that builds and runs remote tests in this environment.
> 
> Any thoughts on this?

For the remote solution I would propose you do the following:
- Modify the gdbserver binary to support the extended LLDB packets. All these 
packets are described here:

svn cat http://llvm.org/svn/llvm-project/lldb/trunk/docs/lldb-gdb-remote.txt

- Compile the "lldb-platform" binary for x86. This is a binary that can get/put 
files, install executables, make directories and symlinks, list remote 
processes, attach and launch remote processes and much much more. It currently 
uses the GDB remote protocol and all you really need to do is to get it to 
build for linux. After this you can start the lldb-platform binary and then 
attach to it from a remote LLDB. I am currently working on a large patch that 
will be committed in the next few days which exposes the platform through the 
API as lldb::SBPlatform objects. 

If you get the gdbserver updated to handle the extra packets, this should get 
you debugging in no time on Android. The platform will get you the rest of the 
debugging experience (auto install, remote shell commands, and much much more.


> 
> 3. Get the LLDB remote solution up and running against a remote Linux ARM 
> system.
> 
> The idea being that it will be easier for me to poke around on the Linux ARM 
> system than it would be to go straight for the Android device or emulator, 
> but gets me working against an ARM system, one step closer to a typical Nexus 
> device.  And helps out ARM Linux remote support in the process (if there are 
> any weak spots).  I don't know yet what the scope of work here might entail.  
> Similar to (2), I'll want to set up a build bot that builds and runs remote 
> tests in this environment as well.

My new upcoming platform patches will allow you to remotely run the test suite 
on there remote devices using the lldb-platform. Everything for ARM is the same 
as the x86 solution above: modify the gdbserver to support the LLDB packets and 
get the lldb-platform to compile for the remote ARM system.

> 
> 4. Getting LLDB remote solution up and running against an Android ARM device.

Same flow as linux ARM.

> 5. Either directly implement or make it straightforward for Android vendors 
> to fill in anything necessary to use our remote solution on other Android 
> hardware.

I think we can grow the SBPlatform and the internal lldb_private::Platform to 
do a lot of great stuff. As soon as my patch lands, please take a look and see 
what you think.

If you have any questions, ask away.

Greg Clayton

_______________________________________________
lldb-dev mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev

Reply via email to