From: gfleury <gfle...@disroot.org> Message-ID: <20250817104023.91919-7-gfle...@disroot.org> --- htl/Makefile | 8 ++++---- htl/Versions | 13 ++++++++++--- hurd/hurdlock.c | 1 + hurd/hurdlock.h | 1 + sysdeps/htl/include/semaphore.h | 11 +++++++++++ sysdeps/htl/sem-timedwait.c | 14 ++++++++++++-- sysdeps/htl/sem-trywait.c | 7 ++++++- sysdeps/htl/sem-wait.c | 6 +++++- sysdeps/mach/hurd/i386/libc.abilist | 8 ++++++++ sysdeps/mach/hurd/i386/libpthread.abilist | 4 ---- sysdeps/mach/hurd/x86_64/libc.abilist | 8 ++++++++ sysdeps/mach/hurd/x86_64/libpthread.abilist | 4 ---- 12 files changed, 66 insertions(+), 19 deletions(-)
diff --git a/htl/Makefile b/htl/Makefile index b995d1a4b3..56b29e6bfd 100644 --- a/htl/Makefile +++ b/htl/Makefile @@ -34,11 +34,7 @@ libpthread-routines := \ pt-spin \ pt-getname-np \ pt-setname-np \ - sem-timedwait \ - sem-trywait \ sem_unlink \ - sem-wait \ - sem-waitfast \ cancellation \ cthreads-compat \ herrno \ @@ -208,6 +204,10 @@ routines := \ sem-getvalue \ sem-init \ sem-post \ + sem-timedwait \ + sem-trywait \ + sem-wait \ + sem-waitfast \ sem_close \ sem_open \ sem_routines \ diff --git a/htl/Versions b/htl/Versions index ff1d5b9348..c22b1b07f3 100644 --- a/htl/Versions +++ b/htl/Versions @@ -107,6 +107,9 @@ libc { sem_init; sem_open; sem_post; + sem_timedwait; + sem_trywait; + sem_wait; } GLIBC_2.21 { @@ -147,6 +150,8 @@ libc { pthread_rwlock_clockrdlock; pthread_rwlock_clockwrlock; pthread_timedjoin_np; pthread_tryjoin_np; + + sem_clockwait; } GLIBC_2.41 { @@ -225,12 +230,16 @@ libc { pthread_timedjoin_np; pthread_tryjoin_np; pthread_yield; + sem_clockwait; sem_close; sem_destroy; sem_getvalue; sem_init; sem_open; sem_post; + sem_timedwait; + sem_trywait; + sem_wait; } GLIBC_PRIVATE { @@ -323,7 +332,7 @@ libpthread { pthread_create; - sem_timedwait; sem_trywait; sem_unlink; sem_wait; + sem_unlink; pthread_spin_destroy; pthread_spin_init; pthread_spin_lock; pthread_spin_trylock; pthread_spin_unlock; @@ -343,8 +352,6 @@ libpthread { call_once; cnd_broadcast; cnd_destroy; cnd_init; cnd_signal; cnd_timedwait; cnd_wait; tss_create; tss_delete; tss_get; tss_set; - - sem_clockwait; } GLIBC_2.40 { diff --git a/hurd/hurdlock.c b/hurd/hurdlock.c index c771662e84..1cb6981ac2 100644 --- a/hurd/hurdlock.c +++ b/hurd/hurdlock.c @@ -64,6 +64,7 @@ __lll_abstimed_wait_intr (void *ptr, int val, int mlsec = compute_reltime (tsp, clk); return mlsec < 0 ? KERN_TIMEDOUT : __lll_timed_wait_intr (ptr, val, mlsec, flags); } +libc_hidden_def (__lll_abstimed_wait_intr) int __lll_abstimed_xwait (void *ptr, int lo, int hi, diff --git a/hurd/hurdlock.h b/hurd/hurdlock.h index 0cfccc562c..532a07d5f4 100644 --- a/hurd/hurdlock.h +++ b/hurd/hurdlock.h @@ -58,6 +58,7 @@ extern int __lll_abstimed_wait (void *__ptr, int __val, /* Interruptible version. */ extern int __lll_abstimed_wait_intr (void *__ptr, int __val, const struct timespec *__tsp, int __flags, int __clk); +libc_hidden_proto (__lll_abstimed_wait_intr) /* Same as 'lll_xwait', but only block until TSP elapses, using clock CLK. */ diff --git a/sysdeps/htl/include/semaphore.h b/sysdeps/htl/include/semaphore.h index 5e5d3c18e9..b91b9b7077 100644 --- a/sysdeps/htl/include/semaphore.h +++ b/sysdeps/htl/include/semaphore.h @@ -4,6 +4,17 @@ #ifndef _ISOMAC extern __typeof (sem_post) __sem_post; libc_hidden_proto (__sem_post) + +extern int __sem_clockwait (sem_t *__sem, + clockid_t clock, + const struct timespec *__abstime); +libc_hidden_proto (__sem_clockwait) +extern int __sem_timedwait (sem_t *__sem, + const struct timespec *__abstime); +libc_hidden_proto (__sem_timedwait) + +extern int __sem_trywait (sem_t *__sem); +libc_hidden_proto (__sem_trywait) #endif #endif diff --git a/sysdeps/htl/sem-timedwait.c b/sysdeps/htl/sem-timedwait.c index 4931dde5ce..8f2b4d3f8b 100644 --- a/sysdeps/htl/sem-timedwait.c +++ b/sysdeps/htl/sem-timedwait.c @@ -25,6 +25,7 @@ #include <sysdep-cancel.h> #include <pt-internal.h> +#include <shlib-compat.h> #if !__HAVE_64B_ATOMICS static void @@ -196,7 +197,12 @@ __sem_clockwait (sem_t *sem, clockid_t clockid, { return __sem_timedwait_internal (sem, clockid, timeout); } -weak_alias (__sem_clockwait, sem_clockwait); + +libc_hidden_def (__sem_clockwait) +versioned_symbol (libc, __sem_clockwait, sem_clockwait, GLIBC_2_43); +# if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_32, GLIBC_2_43) +compat_symbol (libpthread, __sem_clockwait, sem_clockwait, GLIBC_2_32); +#endif int __sem_timedwait (sem_t *restrict sem, const struct timespec *restrict timeout) @@ -204,4 +210,8 @@ __sem_timedwait (sem_t *restrict sem, const struct timespec *restrict timeout) return __sem_timedwait_internal (sem, CLOCK_REALTIME, timeout); } -weak_alias (__sem_timedwait, sem_timedwait); +libc_hidden_def (__sem_timedwait) +versioned_symbol (libc, __sem_timedwait, sem_timedwait, GLIBC_2_43); +# if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_12, GLIBC_2_43) +compat_symbol (libpthread, __sem_timedwait, sem_timedwait, GLIBC_2_12); +#endif diff --git a/sysdeps/htl/sem-trywait.c b/sysdeps/htl/sem-trywait.c index 38846bf9a3..0d1e9cd5a8 100644 --- a/sysdeps/htl/sem-trywait.c +++ b/sysdeps/htl/sem-trywait.c @@ -21,6 +21,7 @@ #include <hurd.h> #include <pt-internal.h> +#include <shlib-compat.h> int __sem_trywait (sem_t *sem) @@ -33,4 +34,8 @@ __sem_trywait (sem_t *sem) return __hurd_fail (EAGAIN); } -weak_alias (__sem_trywait, sem_trywait); +libc_hidden_def (__sem_trywait) +versioned_symbol (libc, __sem_trywait, sem_trywait, GLIBC_2_43); +# if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_12, GLIBC_2_43) +compat_symbol (libpthread, __sem_trywait, sem_trywait, GLIBC_2_12); +#endif diff --git a/sysdeps/htl/sem-wait.c b/sysdeps/htl/sem-wait.c index 97c873dc8d..c2fc7a93f1 100644 --- a/sysdeps/htl/sem-wait.c +++ b/sysdeps/htl/sem-wait.c @@ -18,6 +18,7 @@ #include <semaphore.h> #include <pt-internal.h> +#include <shlib-compat.h> extern int __sem_timedwait_internal (sem_t *restrict sem, clockid_t clockid, @@ -29,4 +30,7 @@ __sem_wait (sem_t *sem) return __sem_timedwait_internal (sem, CLOCK_REALTIME, 0); } -strong_alias (__sem_wait, sem_wait); +versioned_symbol (libc, __sem_wait, sem_wait, GLIBC_2_43); +# if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_12, GLIBC_2_43) +compat_symbol (libpthread, __sem_wait, sem_wait, GLIBC_2_12); +#endif diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist index 661bbf9532..8eabddcec6 100644 --- a/sysdeps/mach/hurd/i386/libc.abilist +++ b/sysdeps/mach/hurd/i386/libc.abilist @@ -134,6 +134,9 @@ GLIBC_2.12 sem_getvalue F GLIBC_2.12 sem_init F GLIBC_2.12 sem_open F GLIBC_2.12 sem_post F +GLIBC_2.12 sem_timedwait F +GLIBC_2.12 sem_trywait F +GLIBC_2.12 sem_wait F GLIBC_2.13 __fentry__ F GLIBC_2.14 syncfs F GLIBC_2.15 __fdelt_chk F @@ -2333,6 +2336,7 @@ GLIBC_2.32 pthread_rwlock_clockrdlock F GLIBC_2.32 pthread_rwlock_clockwrlock F GLIBC_2.32 pthread_timedjoin_np F GLIBC_2.32 pthread_tryjoin_np F +GLIBC_2.32 sem_clockwait F GLIBC_2.32 sigabbrev_np F GLIBC_2.32 sigdescr_np F GLIBC_2.32 strerrordesc_np F @@ -2672,12 +2676,16 @@ GLIBC_2.43 pthread_testcancel F GLIBC_2.43 pthread_timedjoin_np F GLIBC_2.43 pthread_tryjoin_np F GLIBC_2.43 pthread_yield F +GLIBC_2.43 sem_clockwait F GLIBC_2.43 sem_close F GLIBC_2.43 sem_destroy F GLIBC_2.43 sem_getvalue F GLIBC_2.43 sem_init F GLIBC_2.43 sem_open F GLIBC_2.43 sem_post F +GLIBC_2.43 sem_timedwait F +GLIBC_2.43 sem_trywait F +GLIBC_2.43 sem_wait F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_find F diff --git a/sysdeps/mach/hurd/i386/libpthread.abilist b/sysdeps/mach/hurd/i386/libpthread.abilist index 07dd75378e..483d792727 100644 --- a/sysdeps/mach/hurd/i386/libpthread.abilist +++ b/sysdeps/mach/hurd/i386/libpthread.abilist @@ -24,10 +24,7 @@ GLIBC_2.12 pthread_spin_init F GLIBC_2.12 pthread_spin_lock F GLIBC_2.12 pthread_spin_trylock F GLIBC_2.12 pthread_spin_unlock F -GLIBC_2.12 sem_timedwait F -GLIBC_2.12 sem_trywait F GLIBC_2.12 sem_unlink F -GLIBC_2.12 sem_wait F GLIBC_2.2.6 _IO_flockfile F GLIBC_2.2.6 _IO_ftrylockfile F GLIBC_2.2.6 _IO_funlockfile F @@ -48,7 +45,6 @@ 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 sem_clockwait F GLIBC_2.32 thrd_create F GLIBC_2.32 thrd_detach F GLIBC_2.32 thrd_exit F diff --git a/sysdeps/mach/hurd/x86_64/libc.abilist b/sysdeps/mach/hurd/x86_64/libc.abilist index 6fa0e6f01a..de42acab3d 100644 --- a/sysdeps/mach/hurd/x86_64/libc.abilist +++ b/sysdeps/mach/hurd/x86_64/libc.abilist @@ -1759,12 +1759,16 @@ GLIBC_2.38 seed48 F GLIBC_2.38 seed48_r F GLIBC_2.38 seekdir F GLIBC_2.38 select F +GLIBC_2.38 sem_clockwait F GLIBC_2.38 sem_close F GLIBC_2.38 sem_destroy F GLIBC_2.38 sem_getvalue F GLIBC_2.38 sem_init F GLIBC_2.38 sem_open F GLIBC_2.38 sem_post F +GLIBC_2.38 sem_timedwait F +GLIBC_2.38 sem_trywait F +GLIBC_2.38 sem_wait F GLIBC_2.38 semctl F GLIBC_2.38 semget F GLIBC_2.38 semop F @@ -2353,12 +2357,16 @@ GLIBC_2.43 pthread_testcancel F GLIBC_2.43 pthread_timedjoin_np F GLIBC_2.43 pthread_tryjoin_np F GLIBC_2.43 pthread_yield F +GLIBC_2.43 sem_clockwait F GLIBC_2.43 sem_close F GLIBC_2.43 sem_destroy F GLIBC_2.43 sem_getvalue F GLIBC_2.43 sem_init F GLIBC_2.43 sem_open F GLIBC_2.43 sem_post F +GLIBC_2.43 sem_timedwait F +GLIBC_2.43 sem_trywait F +GLIBC_2.43 sem_wait F HURD_CTHREADS_0.3 __cthread_getspecific F HURD_CTHREADS_0.3 __cthread_keycreate F HURD_CTHREADS_0.3 __cthread_setspecific F diff --git a/sysdeps/mach/hurd/x86_64/libpthread.abilist b/sysdeps/mach/hurd/x86_64/libpthread.abilist index 38cf0d2595..4c9ba3b7d5 100644 --- a/sysdeps/mach/hurd/x86_64/libpthread.abilist +++ b/sysdeps/mach/hurd/x86_64/libpthread.abilist @@ -43,11 +43,7 @@ GLIBC_2.38 pthread_spin_init F GLIBC_2.38 pthread_spin_lock F GLIBC_2.38 pthread_spin_trylock F GLIBC_2.38 pthread_spin_unlock F -GLIBC_2.38 sem_clockwait F -GLIBC_2.38 sem_timedwait F -GLIBC_2.38 sem_trywait F GLIBC_2.38 sem_unlink F -GLIBC_2.38 sem_wait F GLIBC_2.38 thrd_create F GLIBC_2.38 thrd_detach F GLIBC_2.38 thrd_exit F -- 2.47.2