On Thursday, 7 May 2015 at 15:58:01 UTC, Joakim wrote:
On Sunday, 17 August 2014 at 18:19:29 UTC, Joakim wrote:
I'll keep updating the wiki with more info, how to build for the command-line and run the druntime/phobos unit tests, along with directions for future work.

An update: I tinkered with ldc and Android/ARM for the hackathon. Didn't get that working yet, but I took Dan Olson's advice to reuse the existing llvm TLS function calls and got ldc to work with Android/x86 a couple days ago.

41 of 42 druntime modules' tests pass: only core.internal convert doesn't, but that module's tests aren't normally run by ldc anyway. Around 15 of 71 phobos modules' tests fail somewhere, most likely related to "long double" issues that either need to be backported, as git master for ldc is still using a year-old druntime/phobos that doesn't have some subsequent Android PRs, or fixed, but I haven't looked into those much yet. Obviously, I can reuse some of this work for Android/ARM, so it should help.

I'm putting these in-progress patches online, in case my ultrabook gets run over by a bus or someone else would like to tinker with them. All it required was a small patch to llvm:

https://gist.github.com/joakim-noah/1fb23fba1ba5b7e87e1a

and these patches for ldc, druntime, and phobos:

https://gist.github.com/joakim-noah/bb0b04965470332d10e4
https://gist.github.com/joakim-noah/c27a0c7f2b5b65cdc268
https://gist.github.com/joakim-noah/07ed7ab1e5732ab91126

Most of the druntime and phobos patches were backported from PRs already committed in their respective master branches. The only real new work is in druntime's rt.sections_ldc. It's all a bit hacky right now, but I'll clean it up and submit PRs eventually.

I tried the same approach that worked on x86 on ARM, with the similar ARM GOT relocation as can be seen in the llvm patch above, but it didn't work. I'm reading up on the relevant ELF relocation info and looking at the ARM assembly. If anybody better versed with those low-level linker details would like to chip in, that should be the last remaining piece to get much of Android/ARM working.

Good news! Thank you for your work!

Once Android support become working, I'm planning to add Android support to DlangUI library. It's actually a port of C++ UI library I'm using on Android for Cool Reader GL app. So it should not be hard to port it back to Android.

Best regards,
     Vadim

Reply via email to