TLS + LDC + Android (ARM) = FAIL

Joakim dlang at joakim.fea.st
Wed Nov 1 22:16:14 UTC 2017


On Wednesday, 1 November 2017 at 21:50:09 UTC, Johannes Pfau 
wrote:
> Am Wed, 01 Nov 2017 19:24:42 +0000
> schrieb Joakim <dlang at joakim.fea.st>:
>
>> 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.
>
> If there's a backend bug in GCC related to Android nobody will 
> take responsibility as it's not officially supported. All 
> tutorials and documentation will focus on LLVM based compilers. 
> It's certainly still interesting to use GDC for Android, but it 
> is more work (especially considering Android is one of the few 
> systems requiring emutls) for little benefit, especially if 
> most users are going to use LLVM anyway.
>
> With the limited time available I think GDC should focus on 
> systems where GCC is a first class or even the preferred 
> compiler. X86/MIPS/ARM/PPC/Linux as some distributions such as 
> debian might prefer a GCC based compiler. Then there are 
> embedded toolchains which primarily use GCC: MSP and ARM (GCC 
> Arm Embedded project). Also many console homebrew toolchains 
> exclusively use GCC.
>
> I just don't think we have to support two compilers for any 
> target with the little resources we have.

Here's the thing though: Android is basically just linux/ARM 
without native TLS and replacing glibc with the bionic C runtime. 
  If you're going to support linux/ARM with glibc, it's not going 
to take much to support Android too, particularly since I 
upstreamed all my Bionic declarations and support into stock 
druntime.

Far be it from me to tell you what to work on, and I realize 
getting emulated TLS working with the garbage-collector is a 
pain, but it won't take much more than emulated TLS for gdc to 
support Android.  If you grep the llvm codebase for Android, you 
find almost nothing, basically just emulated TLS.

I agree that we don't need two D compilers for every platform, 
but it'd be nice to have for the most widely deployed OS platform 
on the planet. ;)


More information about the Digitalmars-d mailing list