Ehem, ARM

Joakim joakim at airpost.net
Mon Nov 25 02:38:23 PST 2013


On Friday, 22 November 2013 at 18:01:44 UTC, Joakim wrote:
> I spent some time setting up the appropriate VMs and looking at 
> the relevant Android dev tools myself.  It appears that the 
> Android NDK uses a lightly patched version of stock llvm/clang 
> 3.3, along with the gold linker.  Their patches are available 
> online:
>
> https://android.googlesource.com/toolchain/llvm/+log/release_33
> https://android.googlesource.com/toolchain/clang/+log/release_33
>
> Their llvm is the same as llvm 3.3 until commit ce33750 and 
> clang is the same until commit 20c7d45.  The stock llvm/clang 
> 3.3 have some limited support for Android, not much.  I'm going 
> to start going through those patches next.
>
> Since there are only about 50-100 llvm/clang patches, many of 
> them architecture-specific and so not necessary, this suggests 
> that the Android ABI is not that different from linux.
Alright, went through all the Android llvm/clang patches and 
there's little of significance.  They hardcode two clang options 
for android/x86, -mstackrealign and -msse3, add a few tweaks for 
ARM, and that's about it.  Most of the patches are for some other 
NDK work by MediaTek, which don't appear to be used by the 
official Android NDK.

I was able to compile an identical stripped shared library from 
the samples just by using the stock clang 3.3 that's installed in 
Arch linux, once I added the two hardcoded flags in with the rest 
of the flags their makefiles generate, so you really don't even 
need to use their compiler, at least for Android/x86.

Next step, get dmd to do the same with a "hello world" native 
Android app.  I'll update this thread as I go, for anyone who's 
interested.


More information about the Digitalmars-d mailing list