TLS + LDC + Android (ARM) = FAIL

Joakim dlang at joakim.fea.st
Wed Nov 1 19:24:42 UTC 2017


On Wednesday, 1 November 2017 at 18:28:12 UTC, Johannes Pfau 
wrote:
> ARM: Fine. Android: probably won't work well. AFAIK we're only 
> missing emulated TLS / GC integration, so most test will pass 
> but real apps will crash because of GC memory corruption. I 
> guess I should finally get back to fixing that problem ;-) OTOH 
> Android doesn't even support GCC anymore, so I don't really see 
> much benefit in maintaining GDC Android support.

I don't see what their deciding to drop gcc has to do with 
whether gdc should support Android.

On Wednesday, 1 November 2017 at 18:56:00 UTC, Igor Shirkalin 
wrote:
> Everything was beautiful for Win/Linux/iOS/Android.
> Some day we had to use LDC (for some obvious reasons). I marked 
> every function with @nogc and pure (it helped me to optimize 
> the code). The problem is TLS. Android doesn't support it. At 
> all. If you understand I talk about -betterC feature.

Android doesn't have native TLS, but __thread-annotated variables 
will work with clang: it uses emulated TLS.

betterC is not going to save you, many parts of the standard 
library won't work with it.

Please open an issue for ldc.  In it, give us as much relevant 
detail as you can.  Are you building the D component as a 
separate shared library or does it just get linked into a single 
binary with your C/C++ code?  Are you making sure to initialize 
the D runtime using rt_init, as described here?

https://wiki.dlang.org/Runtime_internals

Have you followed the three linking rules for emulated TLS that I 
laid out in an earlier post?

Put that info in an issue on the ldc github and we can help you 
out.


More information about the Digitalmars-d mailing list