On Monday, 18 May 2015 at 14:30:54 UTC, Dan Olson wrote:
"Joakim" <dl...@joakim.fea.st> writes:

I just checked last week and the recent Android NDK's gcc has emulated TLS enabled by default, while the same C/C++ source employing TLS __thread and compiled with the NDK's clang will segfault because it doesn't have emulated TLS. Emulated TLS wasn't added to the NDK's gcc by google either: it appears to have just slipped in from upstream, which is perhaps why they seem to be unaware that it works for one
compiler in the NDK and not the other.

Let the llvm guys know of this disparity, and I'm sure they'll be up
for remedying it.

Just out of curiosity, shouldn't GDC then be better suited for Android than LDC? LDC works well with iOS only because Apple contributes to
LLVM.

I don't think it matters, as llvm works very well on linux and the changes google makes for Android to the NDK compilers are minimal:

https://android.googlesource.com/toolchain/llvm/+log/release_36
https://android.googlesource.com/toolchain/clang/+log/release_36

https://android.googlesource.com/toolchain/gcc/+log/master/gcc-4.9

The one difference is TLS using the __thread annotation, which was documented as unsupported by the Android NDK for a long time but now happens to work with gcc and not clang/llvm. However, the gdc guys trying to use gcc's emulated TLS have reported problems getting it working with the GC. Maybe that's since been fixed, but that's the last I heard.

Later, mid-summer perhaps, I plan to get both iOS and Android arm64 devicse so will be joining in the effort. I have too much other stuff going on now though outside of D-Land and have to stick to little D
projects that won't vacuum away an afternoon.

Sure, have fun with your new devices. :) Hopefully, I'll get Android/ARM working before then, but I don't and won't have any AArch64 devices to test. Not that it matters, as 64-bit ARM has even less share than x86 right now.

Reply via email to