blob: d4ae492a86ab2e64e27ba780cd448b313bba98c9 [file] [log] [blame]
From 31540ba1e058a8bb43080c8174cff12906d0a1d1 Mon Sep 17 00:00:00 2001
From: Caroline Tice <cmtice@google.com>
Date: Fri, 19 Jan 2018 11:35:09 -0800
Subject: [PATCH] Fix emutls.c to not leak pthread keys.
[Adrian Ratiu: forward port to GCC 10.2.0]
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
---
libgcc/emutls.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/libgcc/emutls.c b/libgcc/emutls.c
index f8012f6d8d5..9d23fb7c1f5 100644
--- a/libgcc/emutls.c
+++ b/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,6 +87,15 @@ emutls_init (void)
#endif
if (__gthread_key_create (&emutls_key, emutls_destroy) != 0)
abort ();
+ emutls_key_created = 1;
+}
+
+__attribute__((destructor))
+static void
+unregister_emutls_key (void)
+{
+ if (emutls_key_created)
+ __gthread_key_delete (emutls_key);
}
#endif
--
2.30.0