fix unintended linking dependency of pthread_key_create on __synccall
authorRich Felker <dalias@aerifal.cx>
Thu, 17 Jan 2019 04:50:08 +0000 (23:50 -0500)
committerRich Felker <dalias@aerifal.cx>
Thu, 17 Jan 2019 04:50:08 +0000 (23:50 -0500)
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.

src/thread/pthread_key_create.c

index e26f199c3c9cce5b7050bf576501533060d9e06b..0903d48f3f5c36cdf3f10cdc25593703195390e9 100644 (file)
@@ -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 = {