aboutsummaryrefslogtreecommitdiff
path: root/malloc
diff options
context:
space:
mode:
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>2020-05-14 17:02:38 -0300
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>2020-07-07 14:10:58 -0300
commit9deec7c8bab24659e78172dd850f4ca37c57940c (patch)
treee55e909e60b9995054203a428c394d27862620d5 /malloc
parentf26d456b98abf02b3ff92f1a3c0d4473b7ffd85c (diff)
downloadglibc-9deec7c8bab24659e78172dd850f4ca37c57940c.tar
glibc-9deec7c8bab24659e78172dd850f4ca37c57940c.tar.gz
glibc-9deec7c8bab24659e78172dd850f4ca37c57940c.tar.bz2
glibc-9deec7c8bab24659e78172dd850f4ca37c57940c.zip
string: Remove old TLS usage on strsignal
The per-thread state is refactored two use two strategies: 1. The default one uses a TLS structure, which will be placed in the static TLS space (using __thread keyword). 2. Linux allocates via struct pthread and access it through THREAD_* macros. The default strategy has the disadvantage of increasing libc.so static TLS consumption and thus decreasing the possible surplus used in some scenarios (which might be mitigated by BZ#25051 fix). It is used only on Hurd, where accessing the thread storage in the in single thread case is not straightforward (afaiu, Hurd developers could correct me here). The fallback static allocation used for allocation failure is also removed: defining its size is problematic without synchronizing with translated messages (to avoid partial translation) and the resulting usage is not thread-safe. Checked on x86-64-linux-gnu, i686-linux-gnu, powerpc64le-linux-gnu, and s390x-linux-gnu. Tested-by: Carlos O'Donell <carlos@redhat.com> Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Diffstat (limited to 'malloc')
-rw-r--r--malloc/thread-freeres.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/malloc/thread-freeres.c b/malloc/thread-freeres.c
index c71ca4fc33..3408bdbefd 100644
--- a/malloc/thread-freeres.c
+++ b/malloc/thread-freeres.c
@@ -21,6 +21,7 @@
#include <resolv/resolv-internal.h>
#include <rpc/rpc.h>
#include <string.h>
+#include <tls-internal.h>
/* Thread shutdown function. Note that this function must be called
for threads during shutdown for correctness reasons. Unlike
@@ -32,6 +33,7 @@ __libc_thread_freeres (void)
call_function_static_weak (__rpc_thread_destroy);
call_function_static_weak (__res_thread_freeres);
call_function_static_weak (__strerror_thread_freeres);
+ __glibc_tls_internal_free ();
/* This should come last because it shuts down malloc for this
thread and the other shutdown functions might well call free. */