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