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.