--emulated-tls explanation?

Denis Feklushkin feklushkin.denis at gmail.com
Tue Oct 13 10:35:57 UTC 2020


On Tuesday, 13 October 2020 at 10:25:35 UTC, IGotD- wrote:
> On Tuesday, 13 October 2020 at 09:32:07 UTC, Denis Feklushkin 
> wrote:
>> Hi!
>>
>> Can anyone explain what "--emulated-tls" actually do?
>>
>> It solves my problem with correct static variables placement 
>> on ARM Cortex M3, but I don't know why.
>
> I think it is a compatibility layer that GCC provides. Instead 
> of implementing everything yourself from scratch, GCC provide a 
> framework and a set of hooks you should implement.
>
> http://www.chiark.greenend.org.uk/doc/gcc-4.9-doc/gccint.html#Emulated-TLS
>
> It seems like GCC provides default hooks, so for example if 
> threading is not enabled this TLS emulation layer is probably 
> pretty stupid and do not know what a thread is.

So, compiler knows what this platform is not supports 
multithreading and does some things wrong with thread static 
variables if "--emulated-tls" is ommited?

> The variables are dynamically allocated using the C library 
> memory allocation functions.

As I understand, variables allocated by compiler, but it uses 
internal implict call to __tls_get_addr to provide access to them.



More information about the digitalmars-d-ldc mailing list