From patchwork Fri Nov 21 19:13:36 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: gfleury X-Patchwork-Id: 124991 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 29947384CB90 for ; Fri, 21 Nov 2025 19:15:43 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 29947384CB90 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, secure) header.d=disroot.org header.i=@disroot.org header.a=rsa-sha256 header.s=mail header.b=ThRk6lIt X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from layka.disroot.org (layka.disroot.org [178.21.23.139]) by sourceware.org (Postfix) with ESMTPS id A7CD4384CB94 for ; Fri, 21 Nov 2025 19:14:31 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org A7CD4384CB94 Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=disroot.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=disroot.org ARC-Filter: OpenARC Filter v1.0.0 sourceware.org A7CD4384CB94 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=178.21.23.139 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1763752472; cv=none; b=AxZ2eOodsjbCuT5oLR30d+KPRzAIZxhQTRQ8nfq1M1U58K1fZKLEUcFOkY8wW9z26+LlOdGclB+99VYYPv1AEF+rHN4GrGdGNyVDCUJdDSPBw0eKx2qXLibzGaZBHhA2BM3y3dgt3QHZ/kXg+A2lb8PXIjtv19bSxq8ChSNzLm4= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1763752472; c=relaxed/simple; bh=GZU5wjvHp8EgIPPZgD0JuxVMmXlPScCV6aubxyTrwqE=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=AVyEUqM6rOagAM/QgM6fE2qmWZ0QsW1ULEWf06aBpTmtj89Le/L3ihwxY/gIRvgw5JHYFFZpsPNMeinRulRnPiW198uqAPOLYb8cGPaQA1laNoh4Kr5rj+MwViGQpxpNOlJLU1a/mBrJCu9jOifah5g1BGpcfsp9R9mRNET7uBg= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org A7CD4384CB94 Received: from mail01.disroot.lan (localhost [127.0.0.1]) by disroot.org (Postfix) with ESMTP id 5805A261DA; Fri, 21 Nov 2025 20:14:30 +0100 (CET) X-Virus-Scanned: SPAM Filter at disroot.org Received: from layka.disroot.org ([127.0.0.1]) by localhost (disroot.org [127.0.0.1]) (amavis, port 10024) with ESMTP id 5u_q_Dw5jdoV; Fri, 21 Nov 2025 20:14:28 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=disroot.org; s=mail; t=1763752468; bh=GZU5wjvHp8EgIPPZgD0JuxVMmXlPScCV6aubxyTrwqE=; h=From:To:Cc:Subject:Date; b=ThRk6lIt1EilKni9HZ8nwdD1sSVAt3fFK5uzlJC4OZzHCBp0gU4GlNghUidK82eP6 upYC55Rniqvb5puDSZj5N0ignnhOyRKQCzjPYza9F7dYJ10wBvRvv25jfPh/CYlkCF FqoqYpj8D5X6M7QPrCFmwJ9w/c4UeBpFrYW3S54LZ+8Nk0+eIWR4OL54OvMySbilCg 3t+1rWz09aFwnFVNINhIuyF1PkT0zRz17MARu6Z+UoiV5DesbZ0uZ5IpiE1kUolq16 i+LKWJqDvLh8b7zBhRds8nJ6xHS7UBWz4/MGc8VXxDgAwFGxl2l7bM1txJHNe+gPES 0C87BT8LQEavQ== From: gfleury To: libc-alpha@sourceware.org Cc: gfleury Subject: [PATCH v2] htl: move c11 symbols into libc. Date: Fri, 21 Nov 2025 21:13:36 +0200 Message-ID: <20251121191336.1224485-1-gfleury@disroot.org> MIME-Version: 1.0 X-Spam-Status: No, score=-13.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, PROLO_LEO1, RCVD_IN_HOSTKARMA_W, RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libc-alpha-bounces~patchwork=sourceware.org@sourceware.org thrd_{create,detach,exit,join}. mtx_{init,destroy,lock,trylock,unlock,timeelock}. cnd_{broadcast,destroy,init,signal,timewait,wait,destroy} tss_{create,delete,get,set}. call_once. --- htl/Versions | 35 ++++++++++++++--- sysdeps/htl/c11-thread.h | 2 + sysdeps/mach/hurd/i386/libc.abilist | 42 +++++++++++++++++++++ sysdeps/mach/hurd/i386/libpthread.abilist | 21 ----------- sysdeps/mach/hurd/x86_64/libc.abilist | 42 +++++++++++++++++++++ sysdeps/mach/hurd/x86_64/libpthread.abilist | 21 ----------- sysdeps/nptl/c11-thread.h | 2 + sysdeps/pthread/Makefile | 17 ++++----- sysdeps/pthread/call_once.c | 11 ++---- sysdeps/pthread/cnd_broadcast.c | 11 ++---- sysdeps/pthread/cnd_destroy.c | 11 ++---- sysdeps/pthread/cnd_init.c | 11 ++---- sysdeps/pthread/cnd_signal.c | 12 +++--- sysdeps/pthread/cnd_timedwait.c | 8 +++- sysdeps/pthread/cnd_wait.c | 11 ++---- sysdeps/pthread/mtx_destroy.c | 11 ++---- sysdeps/pthread/mtx_init.c | 11 ++---- sysdeps/pthread/mtx_lock.c | 11 ++---- sysdeps/pthread/mtx_timedlock.c | 8 +++- sysdeps/pthread/mtx_trylock.c | 11 ++---- sysdeps/pthread/mtx_unlock.c | 11 ++---- sysdeps/pthread/thrd_create.c | 11 ++---- sysdeps/pthread/thrd_detach.c | 11 ++---- sysdeps/pthread/thrd_exit.c | 11 ++---- sysdeps/pthread/thrd_join.c | 11 ++---- sysdeps/pthread/tss_create.c | 11 ++---- sysdeps/pthread/tss_delete.c | 11 ++---- sysdeps/pthread/tss_get.c | 11 ++---- sysdeps/pthread/tss_set.c | 11 ++---- 29 files changed, 215 insertions(+), 193 deletions(-) create mode 100644 sysdeps/htl/c11-thread.h create mode 100644 sysdeps/nptl/c11-thread.h diff --git a/htl/Versions b/htl/Versions index 2228f8fd..cac34e62 100644 --- a/htl/Versions +++ b/htl/Versions @@ -149,6 +149,13 @@ libc { # C11 thread symbols. GLIBC_2.32 { thrd_current; thrd_equal; thrd_sleep; thrd_yield; + thrd_create; thrd_detach; thrd_exit; thrd_join; + + mtx_destroy; mtx_init; mtx_lock; mtx_timedlock; mtx_trylock; mtx_unlock; + cnd_broadcast; cnd_destroy; cnd_init; cnd_signal; cnd_timedwait; cnd_wait; + tss_create; tss_delete; tss_get; tss_set; + + call_once; pthread_cond_clockwait; pthread_clockjoin_np; @@ -232,6 +239,19 @@ libc { } GLIBC_2.43 { + call_once; + cnd_broadcast; + cnd_destroy; + cnd_init; + cnd_signal; + cnd_timedwait; + cnd_wait; + mtx_destroy; + mtx_init; + mtx_lock; + mtx_timedlock; + mtx_trylock; + mtx_unlock; pthread_cancel; pthread_clockjoin_np; pthread_create; @@ -268,6 +288,14 @@ libc { sem_trywait; sem_unlink; sem_wait; + thrd_create; + thrd_detach; + thrd_exit; + thrd_join; + tss_create; + tss_delete; + tss_get; + tss_set; } GLIBC_PRIVATE { @@ -351,12 +379,7 @@ libpthread { } GLIBC_2.32 { - # C11 thread symbols. - thrd_create; thrd_detach; thrd_exit; thrd_join; - mtx_init; mtx_lock; mtx_timedlock; mtx_trylock; mtx_unlock; mtx_destroy; - call_once; - cnd_broadcast; cnd_destroy; cnd_init; cnd_signal; cnd_timedwait; cnd_wait; - tss_create; tss_delete; tss_get; tss_set; + __libpthread_version_placeholder; } GLIBC_2.40 { diff --git a/sysdeps/htl/c11-thread.h b/sysdeps/htl/c11-thread.h new file mode 100644 index 00000000..d6ba38bf --- /dev/null +++ b/sysdeps/htl/c11-thread.h @@ -0,0 +1,2 @@ +#define C11_THREADS_INTRODUCED GLIBC_2_32 +#define C11_THREADS_IN_LIBC GLIBC_2_43 diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist index dbbb399f..08dcd85c 100644 --- a/sysdeps/mach/hurd/i386/libc.abilist +++ b/sysdeps/mach/hurd/i386/libc.abilist @@ -2334,8 +2334,21 @@ GLIBC_2.3.4 xdr_quad_t F GLIBC_2.3.4 xdr_u_quad_t F GLIBC_2.30 twalk_r F GLIBC_2.32 __libc_single_threaded D 0x1 +GLIBC_2.32 call_once F +GLIBC_2.32 cnd_broadcast F +GLIBC_2.32 cnd_destroy F +GLIBC_2.32 cnd_init F +GLIBC_2.32 cnd_signal F +GLIBC_2.32 cnd_timedwait F +GLIBC_2.32 cnd_wait F GLIBC_2.32 mach_print F GLIBC_2.32 mremap F +GLIBC_2.32 mtx_destroy F +GLIBC_2.32 mtx_init F +GLIBC_2.32 mtx_lock F +GLIBC_2.32 mtx_timedlock F +GLIBC_2.32 mtx_trylock F +GLIBC_2.32 mtx_unlock F GLIBC_2.32 pthread_clockjoin_np F GLIBC_2.32 pthread_cond_clockwait F GLIBC_2.32 pthread_mutex_clocklock F @@ -2354,10 +2367,18 @@ GLIBC_2.32 sigabbrev_np F GLIBC_2.32 sigdescr_np F GLIBC_2.32 strerrordesc_np F GLIBC_2.32 strerrorname_np F +GLIBC_2.32 thrd_create F GLIBC_2.32 thrd_current F +GLIBC_2.32 thrd_detach F GLIBC_2.32 thrd_equal F +GLIBC_2.32 thrd_exit F +GLIBC_2.32 thrd_join F GLIBC_2.32 thrd_sleep F GLIBC_2.32 thrd_yield F +GLIBC_2.32 tss_create F +GLIBC_2.32 tss_delete F +GLIBC_2.32 tss_get F +GLIBC_2.32 tss_set F GLIBC_2.33 __x86_get_cpuid_feature_leaf F GLIBC_2.33 fstat F GLIBC_2.33 fstat64 F @@ -2677,10 +2698,23 @@ GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F GLIBC_2.43 __memset_explicit_chk F +GLIBC_2.43 call_once F +GLIBC_2.43 cnd_broadcast F +GLIBC_2.43 cnd_destroy F +GLIBC_2.43 cnd_init F +GLIBC_2.43 cnd_signal F +GLIBC_2.43 cnd_timedwait F +GLIBC_2.43 cnd_wait F GLIBC_2.43 free_aligned_sized F GLIBC_2.43 free_sized F GLIBC_2.43 memalignment F GLIBC_2.43 memset_explicit F +GLIBC_2.43 mtx_destroy F +GLIBC_2.43 mtx_init F +GLIBC_2.43 mtx_lock F +GLIBC_2.43 mtx_timedlock F +GLIBC_2.43 mtx_trylock F +GLIBC_2.43 mtx_unlock F GLIBC_2.43 pthread_cancel F GLIBC_2.43 pthread_clockjoin_np F GLIBC_2.43 pthread_create F @@ -2717,6 +2751,14 @@ GLIBC_2.43 sem_timedwait F GLIBC_2.43 sem_trywait F GLIBC_2.43 sem_unlink F GLIBC_2.43 sem_wait F +GLIBC_2.43 thrd_create F +GLIBC_2.43 thrd_detach F +GLIBC_2.43 thrd_exit F +GLIBC_2.43 thrd_join F +GLIBC_2.43 tss_create F +GLIBC_2.43 tss_delete F +GLIBC_2.43 tss_get F +GLIBC_2.43 tss_set F GLIBC_2.43 umaxabs F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F diff --git a/sysdeps/mach/hurd/i386/libpthread.abilist b/sysdeps/mach/hurd/i386/libpthread.abilist index ff9c2732..e69de29b 100644 --- a/sysdeps/mach/hurd/i386/libpthread.abilist +++ b/sysdeps/mach/hurd/i386/libpthread.abilist @@ -1,21 +0,0 @@ -GLIBC_2.32 call_once F -GLIBC_2.32 cnd_broadcast F -GLIBC_2.32 cnd_destroy F -GLIBC_2.32 cnd_init F -GLIBC_2.32 cnd_signal F -GLIBC_2.32 cnd_timedwait F -GLIBC_2.32 cnd_wait F -GLIBC_2.32 mtx_destroy F -GLIBC_2.32 mtx_init F -GLIBC_2.32 mtx_lock F -GLIBC_2.32 mtx_timedlock F -GLIBC_2.32 mtx_trylock F -GLIBC_2.32 mtx_unlock F -GLIBC_2.32 thrd_create F -GLIBC_2.32 thrd_detach F -GLIBC_2.32 thrd_exit F -GLIBC_2.32 thrd_join F -GLIBC_2.32 tss_create F -GLIBC_2.32 tss_delete F -GLIBC_2.32 tss_get F -GLIBC_2.32 tss_set F diff --git a/sysdeps/mach/hurd/x86_64/libc.abilist b/sysdeps/mach/hurd/x86_64/libc.abilist index 7f0e601b..c17d5399 100644 --- a/sysdeps/mach/hurd/x86_64/libc.abilist +++ b/sysdeps/mach/hurd/x86_64/libc.abilist @@ -688,6 +688,7 @@ GLIBC_2.38 bzero F GLIBC_2.38 c16rtomb F GLIBC_2.38 c32rtomb F GLIBC_2.38 c8rtomb F +GLIBC_2.38 call_once F GLIBC_2.38 calloc F GLIBC_2.38 canonicalize_file_name F GLIBC_2.38 catclose F @@ -718,6 +719,12 @@ GLIBC_2.38 close_range F GLIBC_2.38 closedir F GLIBC_2.38 closefrom F GLIBC_2.38 closelog F +GLIBC_2.38 cnd_broadcast F +GLIBC_2.38 cnd_destroy F +GLIBC_2.38 cnd_init F +GLIBC_2.38 cnd_signal F +GLIBC_2.38 cnd_timedwait F +GLIBC_2.38 cnd_wait F GLIBC_2.38 confstr F GLIBC_2.38 connect F GLIBC_2.38 copy_file_range F @@ -1413,6 +1420,12 @@ GLIBC_2.38 msgrcv F GLIBC_2.38 msgsnd F GLIBC_2.38 msync F GLIBC_2.38 mtrace F +GLIBC_2.38 mtx_destroy F +GLIBC_2.38 mtx_init F +GLIBC_2.38 mtx_lock F +GLIBC_2.38 mtx_timedlock F +GLIBC_2.38 mtx_trylock F +GLIBC_2.38 mtx_unlock F GLIBC_2.38 munlock F GLIBC_2.38 munlockall F GLIBC_2.38 munmap F @@ -2033,8 +2046,12 @@ GLIBC_2.38 telldir F GLIBC_2.38 tempnam F GLIBC_2.38 textdomain F GLIBC_2.38 tfind F +GLIBC_2.38 thrd_create F GLIBC_2.38 thrd_current F +GLIBC_2.38 thrd_detach F GLIBC_2.38 thrd_equal F +GLIBC_2.38 thrd_exit F +GLIBC_2.38 thrd_join F GLIBC_2.38 thrd_sleep F GLIBC_2.38 thrd_yield F GLIBC_2.38 thread_depress_abort F @@ -2064,6 +2081,10 @@ GLIBC_2.38 towupper_l F GLIBC_2.38 truncate F GLIBC_2.38 truncate64 F GLIBC_2.38 tsearch F +GLIBC_2.38 tss_create F +GLIBC_2.38 tss_delete F +GLIBC_2.38 tss_get F +GLIBC_2.38 tss_set F GLIBC_2.38 ttyname F GLIBC_2.38 ttyname_r F GLIBC_2.38 ttyslot F @@ -2354,10 +2375,23 @@ GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F GLIBC_2.43 __memset_explicit_chk F +GLIBC_2.43 call_once F +GLIBC_2.43 cnd_broadcast F +GLIBC_2.43 cnd_destroy F +GLIBC_2.43 cnd_init F +GLIBC_2.43 cnd_signal F +GLIBC_2.43 cnd_timedwait F +GLIBC_2.43 cnd_wait F GLIBC_2.43 free_aligned_sized F GLIBC_2.43 free_sized F GLIBC_2.43 memalignment F GLIBC_2.43 memset_explicit F +GLIBC_2.43 mtx_destroy F +GLIBC_2.43 mtx_init F +GLIBC_2.43 mtx_lock F +GLIBC_2.43 mtx_timedlock F +GLIBC_2.43 mtx_trylock F +GLIBC_2.43 mtx_unlock F GLIBC_2.43 pthread_cancel F GLIBC_2.43 pthread_clockjoin_np F GLIBC_2.43 pthread_create F @@ -2394,6 +2428,14 @@ GLIBC_2.43 sem_timedwait F GLIBC_2.43 sem_trywait F GLIBC_2.43 sem_unlink F GLIBC_2.43 sem_wait F +GLIBC_2.43 thrd_create F +GLIBC_2.43 thrd_detach F +GLIBC_2.43 thrd_exit F +GLIBC_2.43 thrd_join F +GLIBC_2.43 tss_create F +GLIBC_2.43 tss_delete F +GLIBC_2.43 tss_get F +GLIBC_2.43 tss_set F GLIBC_2.43 umaxabs F HURD_CTHREADS_0.3 __mutex_init F HURD_CTHREADS_0.3 __mutex_lock F diff --git a/sysdeps/mach/hurd/x86_64/libpthread.abilist b/sysdeps/mach/hurd/x86_64/libpthread.abilist index b4f2a962..e69de29b 100644 --- a/sysdeps/mach/hurd/x86_64/libpthread.abilist +++ b/sysdeps/mach/hurd/x86_64/libpthread.abilist @@ -1,21 +0,0 @@ -GLIBC_2.38 call_once F -GLIBC_2.38 cnd_broadcast F -GLIBC_2.38 cnd_destroy F -GLIBC_2.38 cnd_init F -GLIBC_2.38 cnd_signal F -GLIBC_2.38 cnd_timedwait F -GLIBC_2.38 cnd_wait F -GLIBC_2.38 mtx_destroy F -GLIBC_2.38 mtx_init F -GLIBC_2.38 mtx_lock F -GLIBC_2.38 mtx_timedlock F -GLIBC_2.38 mtx_trylock F -GLIBC_2.38 mtx_unlock F -GLIBC_2.38 thrd_create F -GLIBC_2.38 thrd_detach F -GLIBC_2.38 thrd_exit F -GLIBC_2.38 thrd_join F -GLIBC_2.38 tss_create F -GLIBC_2.38 tss_delete F -GLIBC_2.38 tss_get F -GLIBC_2.38 tss_set F diff --git a/sysdeps/nptl/c11-thread.h b/sysdeps/nptl/c11-thread.h new file mode 100644 index 00000000..05ea8dee --- /dev/null +++ b/sysdeps/nptl/c11-thread.h @@ -0,0 +1,2 @@ +#define C11_THREADS_INTRODUCED GLIBC_2_28 +#define C11_THREADS_IN_LIBC GLIBC_2_34 diff --git a/sysdeps/pthread/Makefile b/sysdeps/pthread/Makefile index 1da3a9f5..c6ea59ee 100644 --- a/sysdeps/pthread/Makefile +++ b/sysdeps/pthread/Makefile @@ -26,15 +26,6 @@ headers += \ # headers routines += \ - pthread_atfork \ - pthread_atfork_compat \ - thrd_current \ - thrd_equal \ - thrd_sleep \ - thrd_yield \ - # routines - -$(libpthread-routines-var) += \ call_once \ cnd_broadcast \ cnd_destroy \ @@ -48,15 +39,21 @@ $(libpthread-routines-var) += \ mtx_timedlock \ mtx_trylock \ mtx_unlock \ + pthread_atfork \ + pthread_atfork_compat \ thrd_create \ + thrd_current \ thrd_detach \ + thrd_equal \ thrd_exit \ thrd_join \ + thrd_sleep \ + thrd_yield \ tss_create \ tss_delete \ tss_get \ tss_set \ - # $(libpthread-routines-var) + # routines tests += \ tst-abstime \ diff --git a/sysdeps/pthread/call_once.c b/sysdeps/pthread/call_once.c index 9c0eb397..4ed88c37 100644 --- a/sysdeps/pthread/call_once.c +++ b/sysdeps/pthread/call_once.c @@ -20,6 +20,7 @@ #include #include "thrd_priv.h" +#include void __call_once (once_flag *flag, void (*func)(void)) @@ -30,11 +31,7 @@ __call_once (once_flag *flag, void (*func)(void)) "alignof (once_flag) != alignof (pthread_once_t)"); __pthread_once ((pthread_once_t *) flag, func); } -#if PTHREAD_IN_LIBC -versioned_symbol (libc, __call_once, call_once, GLIBC_2_34); -# if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_28, GLIBC_2_34) -compat_symbol (libpthread, __call_once, call_once, GLIBC_2_28); -# endif -#else /* !PTHREAD_IN_LIBC */ -strong_alias (__call_once, call_once) +versioned_symbol (libc, __call_once, call_once, C11_THREADS_IN_LIBC); +#if OTHER_SHLIB_COMPAT (libpthread, C11_THREADS_INTRODUCED, C11_THREADS_IN_LIBC) +compat_symbol (libpthread, __call_once, call_once, C11_THREADS_INTRODUCED); #endif diff --git a/sysdeps/pthread/cnd_broadcast.c b/sysdeps/pthread/cnd_broadcast.c index 4bef01a3..65b5c264 100644 --- a/sysdeps/pthread/cnd_broadcast.c +++ b/sysdeps/pthread/cnd_broadcast.c @@ -18,6 +18,7 @@ #include "thrd_priv.h" #include +#include int __cnd_broadcast (cnd_t *cond) @@ -25,11 +26,7 @@ __cnd_broadcast (cnd_t *cond) int err_code = __pthread_cond_broadcast ((pthread_cond_t*) cond); return thrd_err_map (err_code); } -#if PTHREAD_IN_LIBC -versioned_symbol (libc, __cnd_broadcast, cnd_broadcast, GLIBC_2_34); -# if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_28, GLIBC_2_34) -compat_symbol (libpthread, __cnd_broadcast, cnd_broadcast, GLIBC_2_28); -# endif -#else /* !PTHREAD_IN_LIBC */ -strong_alias (__cnd_broadcast, cnd_broadcast) +versioned_symbol (libc, __cnd_broadcast, cnd_broadcast, C11_THREADS_IN_LIBC); +#if OTHER_SHLIB_COMPAT (libpthread, C11_THREADS_INTRODUCED, C11_THREADS_IN_LIBC) +compat_symbol (libpthread, __cnd_broadcast, cnd_broadcast, C11_THREADS_INTRODUCED); #endif diff --git a/sysdeps/pthread/cnd_destroy.c b/sysdeps/pthread/cnd_destroy.c index ed5e4332..6e852a27 100644 --- a/sysdeps/pthread/cnd_destroy.c +++ b/sysdeps/pthread/cnd_destroy.c @@ -19,17 +19,14 @@ #include "thrd_priv.h" #include "pthreadP.h" #include +#include void __cnd_destroy (cnd_t *cond) { __pthread_cond_destroy ((pthread_cond_t *) cond); } -#if PTHREAD_IN_LIBC -versioned_symbol (libc, __cnd_destroy, cnd_destroy, GLIBC_2_34); -# if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_28, GLIBC_2_34) -compat_symbol (libpthread, __cnd_destroy, cnd_destroy, GLIBC_2_28); -# endif -#else /* !PTHREAD_IN_LIBC */ -strong_alias (__cnd_destroy, cnd_destroy) +versioned_symbol (libc, __cnd_destroy, cnd_destroy, C11_THREADS_IN_LIBC); +#if OTHER_SHLIB_COMPAT (libpthread, C11_THREADS_INTRODUCED, C11_THREADS_IN_LIBC) +compat_symbol (libpthread, __cnd_destroy, cnd_destroy, C11_THREADS_INTRODUCED); #endif diff --git a/sysdeps/pthread/cnd_init.c b/sysdeps/pthread/cnd_init.c index fce84dee..2c0aec39 100644 --- a/sysdeps/pthread/cnd_init.c +++ b/sysdeps/pthread/cnd_init.c @@ -20,6 +20,7 @@ #include #include "thrd_priv.h" +#include int __cnd_init (cnd_t *cond) @@ -32,11 +33,7 @@ __cnd_init (cnd_t *cond) int err_code = __pthread_cond_init ((pthread_cond_t *)cond, NULL); return thrd_err_map (err_code); } -#if PTHREAD_IN_LIBC -versioned_symbol (libc, __cnd_init, cnd_init, GLIBC_2_34); -# if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_28, GLIBC_2_34) -compat_symbol (libpthread, __cnd_init, cnd_init, GLIBC_2_28); -# endif -#else /* !PTHREAD_IN_LIBC */ -strong_alias (__cnd_init, cnd_init) +versioned_symbol (libc, __cnd_init, cnd_init, C11_THREADS_IN_LIBC); +#if OTHER_SHLIB_COMPAT (libpthread, C11_THREADS_INTRODUCED, C11_THREADS_IN_LIBC) +compat_symbol (libpthread, __cnd_init, cnd_init, C11_THREADS_INTRODUCED); #endif diff --git a/sysdeps/pthread/cnd_signal.c b/sysdeps/pthread/cnd_signal.c index 2737ae14..2023b4cd 100644 --- a/sysdeps/pthread/cnd_signal.c +++ b/sysdeps/pthread/cnd_signal.c @@ -18,6 +18,7 @@ #include "thrd_priv.h" #include +#include int __cnd_signal (cnd_t *cond) @@ -25,11 +26,8 @@ __cnd_signal (cnd_t *cond) int err_code = __pthread_cond_signal ((pthread_cond_t *) cond); return thrd_err_map (err_code); } -#if PTHREAD_IN_LIBC -versioned_symbol (libc, __cnd_signal, cnd_signal, GLIBC_2_34); -# if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_28, GLIBC_2_34) -compat_symbol (libpthread, __cnd_signal, cnd_signal, GLIBC_2_28); -# endif -#else /* !PTHREAD_IN_LIBC */ -strong_alias (__cnd_signal, cnd_signal) + +versioned_symbol (libc, __cnd_signal, cnd_signal, C11_THREADS_IN_LIBC); +#if OTHER_SHLIB_COMPAT (libpthread, C11_THREADS_INTRODUCED, C11_THREADS_IN_LIBC) +compat_symbol (libpthread, __cnd_signal, cnd_signal, C11_THREADS_INTRODUCED); #endif diff --git a/sysdeps/pthread/cnd_timedwait.c b/sysdeps/pthread/cnd_timedwait.c index f0529d8f..de49f601 100644 --- a/sysdeps/pthread/cnd_timedwait.c +++ b/sysdeps/pthread/cnd_timedwait.c @@ -16,10 +16,12 @@ License along with the GNU C Library; if not, see . */ +#include #include "thrd_priv.h" +#include int -cnd_timedwait (cnd_t *restrict cond, mtx_t *restrict mutex, +__cnd_timedwait (cnd_t *restrict cond, mtx_t *restrict mutex, const struct timespec* restrict time_point) { int err_code = __pthread_cond_timedwait ((pthread_cond_t *) cond, @@ -27,3 +29,7 @@ cnd_timedwait (cnd_t *restrict cond, mtx_t *restrict mutex, time_point); return thrd_err_map (err_code); } +versioned_symbol (libc, __cnd_timedwait, cnd_timedwait, C11_THREADS_IN_LIBC); +#if OTHER_SHLIB_COMPAT (libpthread, C11_THREADS_INTRODUCED, C11_THREADS_IN_LIBC) +compat_symbol (libpthread, __cnd_timedwait, cnd_timedwait, C11_THREADS_INTRODUCED); +#endif diff --git a/sysdeps/pthread/cnd_wait.c b/sysdeps/pthread/cnd_wait.c index 706466e0..b70b91af 100644 --- a/sysdeps/pthread/cnd_wait.c +++ b/sysdeps/pthread/cnd_wait.c @@ -18,6 +18,7 @@ #include "thrd_priv.h" #include +#include int __cnd_wait (cnd_t *cond, mtx_t *mutex) @@ -26,11 +27,7 @@ __cnd_wait (cnd_t *cond, mtx_t *mutex) (pthread_mutex_t *) mutex); return thrd_err_map (err_code); } -#if PTHREAD_IN_LIBC -versioned_symbol (libc, __cnd_wait, cnd_wait, GLIBC_2_34); -# if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_28, GLIBC_2_34) -compat_symbol (libpthread, __cnd_wait, cnd_wait, GLIBC_2_28); -# endif -#else /* !PTHREAD_IN_LIBC */ -strong_alias (__cnd_wait, cnd_wait) +versioned_symbol (libc, __cnd_wait, cnd_wait, C11_THREADS_IN_LIBC); +#if OTHER_SHLIB_COMPAT (libpthread, C11_THREADS_INTRODUCED, C11_THREADS_IN_LIBC) +compat_symbol (libpthread, __cnd_wait, cnd_wait, C11_THREADS_INTRODUCED); #endif diff --git a/sysdeps/pthread/mtx_destroy.c b/sysdeps/pthread/mtx_destroy.c index f4686663..f3ded47e 100644 --- a/sysdeps/pthread/mtx_destroy.c +++ b/sysdeps/pthread/mtx_destroy.c @@ -19,17 +19,14 @@ #include "thrd_priv.h" #include "pthreadP.h" #include +#include void __mtx_destroy (mtx_t *mutex) { __pthread_mutex_destroy ((pthread_mutex_t *) mutex); } -#if PTHREAD_IN_LIBC -versioned_symbol (libc, __mtx_destroy, mtx_destroy, GLIBC_2_34); -# if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_28, GLIBC_2_34) -compat_symbol (libpthread, __mtx_destroy, mtx_destroy, GLIBC_2_28); -# endif -#else /* !PTHREAD_IN_LIBC */ -strong_alias (__mtx_destroy, mtx_destroy) +versioned_symbol (libc, __mtx_destroy, mtx_destroy, C11_THREADS_IN_LIBC); +#if OTHER_SHLIB_COMPAT (libpthread, C11_THREADS_INTRODUCED, C11_THREADS_IN_LIBC) +compat_symbol (libpthread, __mtx_destroy, mtx_destroy, C11_THREADS_INTRODUCED); #endif diff --git a/sysdeps/pthread/mtx_init.c b/sysdeps/pthread/mtx_init.c index a807eca4..d48cd152 100644 --- a/sysdeps/pthread/mtx_init.c +++ b/sysdeps/pthread/mtx_init.c @@ -20,6 +20,7 @@ #include #include "thrd_priv.h" +#include int __mtx_init (mtx_t *mutex, int type) @@ -52,11 +53,7 @@ __mtx_init (mtx_t *mutex, int type) /* pthread_mutexattr_destroy implementation is a noop. */ return thrd_err_map (err_code); } -#if PTHREAD_IN_LIBC -versioned_symbol (libc, __mtx_init, mtx_init, GLIBC_2_34); -# if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_28, GLIBC_2_34) -compat_symbol (libpthread, __mtx_init, mtx_init, GLIBC_2_28); -# endif -#else /* !PTHREAD_IN_LIBC */ -strong_alias (__mtx_init, mtx_init) +versioned_symbol (libc, __mtx_init, mtx_init, C11_THREADS_IN_LIBC); +#if OTHER_SHLIB_COMPAT (libpthread, C11_THREADS_INTRODUCED, C11_THREADS_IN_LIBC) +compat_symbol (libpthread, __mtx_init, mtx_init, C11_THREADS_INTRODUCED); #endif diff --git a/sysdeps/pthread/mtx_lock.c b/sysdeps/pthread/mtx_lock.c index 7318d424..d37f11d3 100644 --- a/sysdeps/pthread/mtx_lock.c +++ b/sysdeps/pthread/mtx_lock.c @@ -18,6 +18,7 @@ #include "thrd_priv.h" #include +#include int __mtx_lock (mtx_t *mutex) @@ -25,11 +26,7 @@ __mtx_lock (mtx_t *mutex) int err_code = __pthread_mutex_lock ((pthread_mutex_t *) mutex); return thrd_err_map (err_code); } -#if PTHREAD_IN_LIBC -versioned_symbol (libc, __mtx_lock, mtx_lock, GLIBC_2_34); -# if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_28, GLIBC_2_34) -compat_symbol (libpthread, __mtx_lock, mtx_lock, GLIBC_2_28); -# endif -#else /* !PTHREAD_IN_LIBC */ -strong_alias (__mtx_lock, mtx_lock) +versioned_symbol (libc, __mtx_lock, mtx_lock, C11_THREADS_IN_LIBC); +#if OTHER_SHLIB_COMPAT (libpthread, C11_THREADS_INTRODUCED, C11_THREADS_IN_LIBC) +compat_symbol (libpthread, __mtx_lock, mtx_lock, C11_THREADS_INTRODUCED); #endif diff --git a/sysdeps/pthread/mtx_timedlock.c b/sysdeps/pthread/mtx_timedlock.c index 8e7e0af7..bb1b1275 100644 --- a/sysdeps/pthread/mtx_timedlock.c +++ b/sysdeps/pthread/mtx_timedlock.c @@ -16,13 +16,19 @@ License along with the GNU C Library; if not, see . */ +#include #include "thrd_priv.h" +#include int -mtx_timedlock (mtx_t *restrict mutex, +__mtx_timedlock (mtx_t *restrict mutex, const struct timespec *restrict time_point) { int err_code = __pthread_mutex_timedlock ((pthread_mutex_t *)mutex, time_point); return thrd_err_map (err_code); } +versioned_symbol (libc, __mtx_timedlock, mtx_timedlock, C11_THREADS_IN_LIBC); +#if OTHER_SHLIB_COMPAT (libpthread, C11_THREADS_INTRODUCED, C11_THREADS_IN_LIBC) +compat_symbol (libpthread, __mtx_timedlock, mtx_timedlock, C11_THREADS_INTRODUCED); +#endif diff --git a/sysdeps/pthread/mtx_trylock.c b/sysdeps/pthread/mtx_trylock.c index 57b3e6d2..9ecaf5cc 100644 --- a/sysdeps/pthread/mtx_trylock.c +++ b/sysdeps/pthread/mtx_trylock.c @@ -18,6 +18,7 @@ #include #include "thrd_priv.h" +#include int __mtx_trylock (mtx_t *mutex) @@ -25,11 +26,7 @@ __mtx_trylock (mtx_t *mutex) int err_code = __pthread_mutex_trylock ((pthread_mutex_t *) mutex); return thrd_err_map (err_code); } -#if PTHREAD_IN_LIBC -versioned_symbol (libc, __mtx_trylock, mtx_trylock, GLIBC_2_34); -# if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_28, GLIBC_2_34) -compat_symbol (libpthread, __mtx_trylock, mtx_trylock, GLIBC_2_28); -# endif -#else /* !PTHREAD_IN_LIBC */ -strong_alias (__mtx_trylock, mtx_trylock) +versioned_symbol (libc, __mtx_trylock, mtx_trylock, C11_THREADS_IN_LIBC); +#if OTHER_SHLIB_COMPAT (libpthread, C11_THREADS_INTRODUCED, C11_THREADS_IN_LIBC) +compat_symbol (libpthread, __mtx_trylock, mtx_trylock, C11_THREADS_INTRODUCED); #endif diff --git a/sysdeps/pthread/mtx_unlock.c b/sysdeps/pthread/mtx_unlock.c index 978a9ee1..523626f9 100644 --- a/sysdeps/pthread/mtx_unlock.c +++ b/sysdeps/pthread/mtx_unlock.c @@ -18,6 +18,7 @@ #include "thrd_priv.h" #include +#include int __mtx_unlock (mtx_t *mutex) @@ -25,11 +26,7 @@ __mtx_unlock (mtx_t *mutex) int err_code = __pthread_mutex_unlock ((pthread_mutex_t *) mutex); return thrd_err_map (err_code); } -#if PTHREAD_IN_LIBC -versioned_symbol (libc, __mtx_unlock, mtx_unlock, GLIBC_2_34); -# if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_28, GLIBC_2_34) -compat_symbol (libpthread, __mtx_unlock, mtx_unlock, GLIBC_2_28); -# endif -#else /* !PTHREAD_IN_LIBC */ -strong_alias (__mtx_unlock, mtx_unlock) +versioned_symbol (libc, __mtx_unlock, mtx_unlock, C11_THREADS_IN_LIBC); +#if OTHER_SHLIB_COMPAT (libpthread, C11_THREADS_INTRODUCED, C11_THREADS_IN_LIBC) +compat_symbol (libpthread, __mtx_unlock, mtx_unlock, C11_THREADS_INTRODUCED); #endif diff --git a/sysdeps/pthread/thrd_create.c b/sysdeps/pthread/thrd_create.c index 788eb62a..9dceeeaa 100644 --- a/sysdeps/pthread/thrd_create.c +++ b/sysdeps/pthread/thrd_create.c @@ -18,6 +18,7 @@ #include "thrd_priv.h" #include +#include int __thrd_create (thrd_t *thr, thrd_start_t func, void *arg) @@ -29,11 +30,7 @@ __thrd_create (thrd_t *thr, thrd_start_t func, void *arg) (void* (*) (void*))func, arg); return thrd_err_map (err_code); } -#if PTHREAD_IN_LIBC -versioned_symbol (libc, __thrd_create, thrd_create, GLIBC_2_34); -# if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_28, GLIBC_2_34) -compat_symbol (libc, __thrd_create, thrd_create, GLIBC_2_28); -# endif -#else /* !PTHREAD_IN_LIBC */ -strong_alias (__thrd_create, thrd_create) +versioned_symbol (libc, __thrd_create, thrd_create, C11_THREADS_IN_LIBC); +#if OTHER_SHLIB_COMPAT (libpthread, C11_THREADS_INTRODUCED, C11_THREADS_IN_LIBC) +compat_symbol (libpthread, __thrd_create, thrd_create, C11_THREADS_INTRODUCED); #endif diff --git a/sysdeps/pthread/thrd_detach.c b/sysdeps/pthread/thrd_detach.c index d1a05982..3aa2a20c 100644 --- a/sysdeps/pthread/thrd_detach.c +++ b/sysdeps/pthread/thrd_detach.c @@ -18,6 +18,7 @@ #include "thrd_priv.h" #include +#include int __thrd_detach (thrd_t thr) @@ -27,11 +28,7 @@ __thrd_detach (thrd_t thr) err_code = __pthread_detach (thr); return thrd_err_map (err_code); } -#if PTHREAD_IN_LIBC -versioned_symbol (libc, __thrd_detach, thrd_detach, GLIBC_2_34); -# if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_28, GLIBC_2_34) -compat_symbol (libc, __thrd_detach, thrd_detach, GLIBC_2_28); -# endif -#else /* !PTHREAD_IN_LIBC */ -strong_alias (__thrd_detach, thrd_detach) +versioned_symbol (libc, __thrd_detach, thrd_detach, C11_THREADS_IN_LIBC); +#if OTHER_SHLIB_COMPAT (libpthread, C11_THREADS_INTRODUCED, C11_THREADS_IN_LIBC) +compat_symbol (libpthread, __thrd_detach, thrd_detach, C11_THREADS_INTRODUCED); #endif diff --git a/sysdeps/pthread/thrd_exit.c b/sysdeps/pthread/thrd_exit.c index 9207ac2c..67d4fcf8 100644 --- a/sysdeps/pthread/thrd_exit.c +++ b/sysdeps/pthread/thrd_exit.c @@ -18,17 +18,14 @@ #include #include "thrd_priv.h" +#include _Noreturn void __thrd_exit (int res) { __pthread_exit ((void*)(uintptr_t) res); } -#if PTHREAD_IN_LIBC -versioned_symbol (libc, __thrd_exit, thrd_exit, GLIBC_2_34); -# if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_28, GLIBC_2_34) -compat_symbol (libpthread, __thrd_exit, thrd_exit, GLIBC_2_28); -# endif -#else /* !PTHREAD_IN_LIBC */ -strong_alias (__thrd_exit, thrd_exit) +versioned_symbol (libc, __thrd_exit, thrd_exit, C11_THREADS_IN_LIBC); +#if OTHER_SHLIB_COMPAT (libpthread, C11_THREADS_INTRODUCED, C11_THREADS_IN_LIBC) +compat_symbol (libpthread, __thrd_exit, thrd_exit, C11_THREADS_INTRODUCED); #endif diff --git a/sysdeps/pthread/thrd_join.c b/sysdeps/pthread/thrd_join.c index ca9cf3b5..7e06eadb 100644 --- a/sysdeps/pthread/thrd_join.c +++ b/sysdeps/pthread/thrd_join.c @@ -18,6 +18,7 @@ #include "thrd_priv.h" #include +#include int __thrd_join (thrd_t thr, int *res) @@ -29,11 +30,7 @@ __thrd_join (thrd_t thr, int *res) return thrd_err_map (err_code); } -#if PTHREAD_IN_LIBC -versioned_symbol (libc, __thrd_join, thrd_join, GLIBC_2_34); -# if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_28, GLIBC_2_34) -compat_symbol (libc, __thrd_join, thrd_join, GLIBC_2_28); -# endif -#else /* !PTHREAD_IN_LIBC */ -strong_alias (__thrd_join, thrd_join) +versioned_symbol (libc, __thrd_join, thrd_join, C11_THREADS_IN_LIBC); +#if OTHER_SHLIB_COMPAT (libpthread, C11_THREADS_INTRODUCED, C11_THREADS_IN_LIBC) +compat_symbol (libpthread, __thrd_join, thrd_join, C11_THREADS_INTRODUCED); #endif diff --git a/sysdeps/pthread/tss_create.c b/sysdeps/pthread/tss_create.c index b99e80d8..d7788997 100644 --- a/sysdeps/pthread/tss_create.c +++ b/sysdeps/pthread/tss_create.c @@ -18,6 +18,7 @@ #include #include "thrd_priv.h" +#include int __tss_create (tss_t *tss_id, tss_dtor_t destructor) @@ -32,11 +33,7 @@ __tss_create (tss_t *tss_id, tss_dtor_t destructor) int err_code = __pthread_key_create (tss_id, destructor); return thrd_err_map (err_code); } -#if PTHREAD_IN_LIBC -versioned_symbol (libc, __tss_create, tss_create, GLIBC_2_34); -# if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_28, GLIBC_2_34) -compat_symbol (libpthread, __tss_create, tss_create, GLIBC_2_28); -# endif -#else /* !PTHREAD_IN_LIBC */ -strong_alias (__tss_create, tss_create) +versioned_symbol (libc, __tss_create, tss_create, C11_THREADS_IN_LIBC); +#if OTHER_SHLIB_COMPAT (libpthread, C11_THREADS_INTRODUCED, C11_THREADS_IN_LIBC) +compat_symbol (libpthread, __tss_create, tss_create, C11_THREADS_INTRODUCED); #endif diff --git a/sysdeps/pthread/tss_delete.c b/sysdeps/pthread/tss_delete.c index 584f8788..a7771dc6 100644 --- a/sysdeps/pthread/tss_delete.c +++ b/sysdeps/pthread/tss_delete.c @@ -18,17 +18,14 @@ #include #include "thrd_priv.h" +#include void __tss_delete (tss_t tss_id) { __pthread_key_delete (tss_id); } -#if PTHREAD_IN_LIBC -versioned_symbol (libc, __tss_delete, tss_delete, GLIBC_2_34); -# if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_28, GLIBC_2_34) -compat_symbol (libpthread, __tss_delete, tss_delete, GLIBC_2_28); -# endif -#else /* !PTHREAD_IN_LIBC */ -strong_alias (__tss_delete, tss_delete) +versioned_symbol (libc, __tss_delete, tss_delete, C11_THREADS_IN_LIBC); +#if OTHER_SHLIB_COMPAT (libpthread, C11_THREADS_INTRODUCED, C11_THREADS_IN_LIBC) +compat_symbol (libpthread, __tss_delete, tss_delete, C11_THREADS_INTRODUCED); #endif diff --git a/sysdeps/pthread/tss_get.c b/sysdeps/pthread/tss_get.c index bb31cb16..4d992ddd 100644 --- a/sysdeps/pthread/tss_get.c +++ b/sysdeps/pthread/tss_get.c @@ -18,17 +18,14 @@ #include #include "thrd_priv.h" +#include void * __tss_get (tss_t tss_id) { return __pthread_getspecific (tss_id); } -#if PTHREAD_IN_LIBC -versioned_symbol (libc, __tss_get, tss_get, GLIBC_2_34); -# if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_28, GLIBC_2_34) -compat_symbol (libpthread, __tss_get, tss_get, GLIBC_2_28); -# endif -#else /* !PTHREAD_IN_LIBC */ -strong_alias (__tss_get, tss_get) +versioned_symbol (libc, __tss_get, tss_get, C11_THREADS_IN_LIBC); +#if OTHER_SHLIB_COMPAT (libpthread, C11_THREADS_INTRODUCED, C11_THREADS_IN_LIBC) +compat_symbol (libpthread, __tss_get, tss_get, C11_THREADS_INTRODUCED); #endif diff --git a/sysdeps/pthread/tss_set.c b/sysdeps/pthread/tss_set.c index a751c37c..9d9c282b 100644 --- a/sysdeps/pthread/tss_set.c +++ b/sysdeps/pthread/tss_set.c @@ -18,6 +18,7 @@ #include #include "thrd_priv.h" +#include int __tss_set (tss_t tss_id, void *val) @@ -25,11 +26,7 @@ __tss_set (tss_t tss_id, void *val) int err_code = __pthread_setspecific (tss_id, val); return thrd_err_map (err_code); } -#if PTHREAD_IN_LIBC -versioned_symbol (libc, __tss_set, tss_set, GLIBC_2_34); -# if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_28, GLIBC_2_34) -compat_symbol (libpthread, __tss_set, tss_set, GLIBC_2_28); -# endif -#else /* !PTHREAD_IN_LIBC */ -strong_alias (__tss_set, tss_set) +versioned_symbol (libc, __tss_set, tss_set, C11_THREADS_IN_LIBC); +#if OTHER_SHLIB_COMPAT (libpthread, C11_THREADS_INTRODUCED, C11_THREADS_IN_LIBC) +compat_symbol (libpthread, __tss_set, tss_set, C11_THREADS_INTRODUCED); #endif