From 46936205f991de051a9555a03f856683475a2be5 Mon Sep 17 00:00:00 2001 From: Caroline Tice Date: Fri, 19 Jan 2018 11:35:09 -0800 Subject: [libgcc] Fix emutls.c to not leak pthread keys. Bug:b/71814577 Test:Built toolchain w/change and successfully tested building both platform and kernel images with new toolchain for marlin (pixel) device. Change-Id: Ia0c6944ce1d78b5bd57d65f705a3f7a59c944202 --- gcc-4.9/libgcc/emutls.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/gcc-4.9/libgcc/emutls.c b/gcc-4.9/libgcc/emutls.c index fd6d86ed9..77550e057 100644 --- a/gcc-4.9/libgcc/emutls.c +++ b/gcc-4.9/libgcc/emutls.c @@ -60,6 +60,7 @@ static __gthread_mutex_t emutls_mutex = __GTHREAD_MUTEX_INIT; static __gthread_mutex_t emutls_mutex; #endif static __gthread_key_t emutls_key; +static int emutls_key_created = 0; static pointer emutls_size; static void @@ -86,9 +87,18 @@ emutls_init (void) #endif if (__gthread_key_create (&emutls_key, emutls_destroy) != 0) abort (); + emutls_key_created = 1; } #endif +__attribute__((destructor)) +static void +unregister_emutls_key (void) +{ + if (emutls_key_created) + __gthread_key_delete (emutls_key); +} + static void * emutls_alloc (struct __emutls_object *obj) { -- cgit v1.2.3