All TLS using the initial-exec model (which libc.so's own TLS uses) is inherently required to be allocated at thread creation time (dynamic linker startup time for the initial thread).