From 1f34a2328890aa192141f96449d25b77f666bf47 Mon Sep 17 00:00:00 2001 From: Florian Weimer Date: Thu, 3 Nov 2022 17:28:03 +0100 Subject: elf: Introduce and call_tls_init_tp (bug 29249) This makes it more likely that the compiler can compute the strlen argument in _startup_fatal at compile time, which is required to avoid a dependency on strlen this early during process startup. Reviewed-by: Szabolcs Nagy --- elf/rtld.c | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) (limited to 'elf') diff --git a/elf/rtld.c b/elf/rtld.c index 8671594..70ad1ac 100644 --- a/elf/rtld.c +++ b/elf/rtld.c @@ -52,6 +52,7 @@ #include #include #include +#include #include @@ -796,10 +797,7 @@ cannot allocate TLS data structures for initial thread\n"); GL(dl_initial_dtv) = GET_DTV (tcbp); /* And finally install it for the main thread. */ - const char *lossage = TLS_INIT_TP (tcbp); - if (__glibc_unlikely (lossage != NULL)) - _dl_fatal_printf ("cannot set up thread-local storage: %s\n", lossage); - __tls_init_tp (); + call_tls_init_tp (tcbp); __rtld_tls_init_tp_called = true; return tcbp; @@ -2348,13 +2346,7 @@ dl_main (const ElfW(Phdr) *phdr, /* And finally install it for the main thread. */ if (! __rtld_tls_init_tp_called) - { - const char *lossage = TLS_INIT_TP (tcbp); - if (__glibc_unlikely (lossage != NULL)) - _dl_fatal_printf ("cannot set up thread-local storage: %s\n", - lossage); - __tls_init_tp (); - } + call_tls_init_tp (tcbp); /* Make sure no new search directories have been added. */ assert (GLRO(dl_init_all_dirs) == GL(dl_all_dirs)); -- cgit v1.1