On Friday, 8 May 2015 at 16:42:21 UTC, Dan Olson wrote:
Joakim, the ldc merge-2.067 branch works well and has updated
druntime/phobos. I know it has some of your Android updates.
You may
have more fun working with it.
OK, I'll try it. I didn't want to run into bugs unrelated to
cross-compiling, so I hadn't tried it yet.
I wonder if we should keep a common LLVM fork with changes to
support D
on targets without builtin TLS? I did another LLVM hack in x86
backend
to support TLS on iPhone sim, and have been thinking about
adding a
fallback TLS, like emulated tls that gcc and gdc has, to
support TLS
using a target plugin to get lookup address. That way it could
be wired
into any old embedded multi thread RTOS with some sort of
thread-local
support.
Maybe someday could even get LLVM to accept some patches.
Sounds like a worthwhile idea, though my patches to llvm are
minimal. I'm sure they'd seriously consider accepting such
patches, since the gcc backend already has this built in.
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.