about summary refs log tree commit diff
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2019-01-16 23:50:08 -0500
committerRich Felker <dalias@aerifal.cx>2019-01-16 23:50:08 -0500
commit16a522bab047f3014f08302042ab90cf5812b131 (patch)
tree6b6b4b74b3f5d9c08311b447f31d7b8f35e0dc45
parentde7dc1318f493184b20f7661bc12b1829b957b67 (diff)
downloadmusl-16a522bab047f3014f08302042ab90cf5812b131.tar.gz
musl-16a522bab047f3014f08302042ab90cf5812b131.tar.xz
musl-16a522bab047f3014f08302042ab90cf5812b131.zip
fix unintended linking dependency of pthread_key_create on __synccall
commit 84d061d5a31c9c773e29e1e2b1ffe8cb9557bc58 attempted to do this
already, but omitted from pthread_key_create.c the weak definition of
__pthread_key_delete_synccall, so that the definition provided by
pthread_key_delete.c was always pulled in.

based on patch by Markus Wichmann, but with a weak alias rather than
weak reference for consistency/policy about dependence on tooling
features.
-rw-r--r--src/thread/pthread_key_create.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/thread/pthread_key_create.c b/src/thread/pthread_key_create.c
index e26f199c..0903d48f 100644
--- a/src/thread/pthread_key_create.c
+++ b/src/thread/pthread_key_create.c
@@ -35,6 +35,12 @@ static void clean_dirty_tsd_callback(void *p)
 	if (args->caller == self) args->ret = 0;
 }
 
+static void dummy2(void (*f)(void *), void *p)
+{
+}
+
+weak_alias(dummy2, __pthread_key_delete_synccall);
+
 static int clean_dirty_tsd(void)
 {
 	struct cleanup_args args = {