From: gfleury <gfle...@disroot.org> Message-ID: <20250817104023.91919-5-gfle...@disroot.org> --- htl/Makefile | 6 +++--- htl/Versions | 6 +++++- sysdeps/mach/hurd/i386/libc.abilist | 4 ++++ sysdeps/mach/hurd/i386/libpthread.abilist | 2 -- sysdeps/mach/hurd/x86_64/libc.abilist | 4 ++++ sysdeps/mach/hurd/x86_64/libpthread.abilist | 2 -- sysdeps/pthread/sem_close.c | 10 +++++++--- sysdeps/pthread/sem_open.c | 18 ++++++++---------- sysdeps/pthread/sem_routines.c | 1 + 9 files changed, 32 insertions(+), 21 deletions(-)
diff --git a/htl/Makefile b/htl/Makefile index 33dfdc53ac..57327b3df4 100644 --- a/htl/Makefile +++ b/htl/Makefile @@ -34,15 +34,12 @@ libpthread-routines := \ pt-spin \ pt-getname-np \ pt-setname-np \ - sem_close \ - sem_open \ sem-post \ sem-timedwait \ sem-trywait \ sem_unlink \ sem-wait \ sem-waitfast \ - sem_routines \ cancellation \ cthreads-compat \ herrno \ @@ -211,6 +208,9 @@ routines := \ sem-destroy \ sem-getvalue \ sem-init \ + sem_close \ + sem_open \ + sem_routines \ # routines shared-only-routines = forward diff --git a/htl/Versions b/htl/Versions index 764faa016d..5b83e1ce79 100644 --- a/htl/Versions +++ b/htl/Versions @@ -101,9 +101,11 @@ libc { pthread_sigmask; pthread_testcancel; pthread_yield; + sem_close; sem_destroy; sem_getvalue; sem_init; + sem_open; } GLIBC_2.21 { @@ -222,9 +224,11 @@ libc { pthread_timedjoin_np; pthread_tryjoin_np; pthread_yield; + sem_close; sem_destroy; sem_getvalue; sem_init; + sem_open; } GLIBC_PRIVATE { @@ -317,7 +321,7 @@ libpthread { pthread_create; - sem_close; sem_open; sem_post; + sem_post; sem_timedwait; sem_trywait; sem_unlink; sem_wait; pthread_spin_destroy; pthread_spin_init; pthread_spin_lock; diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist index 02bc296fae..9764b6053b 100644 --- a/sysdeps/mach/hurd/i386/libc.abilist +++ b/sysdeps/mach/hurd/i386/libc.abilist @@ -128,9 +128,11 @@ GLIBC_2.12 pthread_setspecific F GLIBC_2.12 pthread_sigmask F GLIBC_2.12 pthread_testcancel F GLIBC_2.12 pthread_yield F +GLIBC_2.12 sem_close F GLIBC_2.12 sem_destroy F GLIBC_2.12 sem_getvalue F GLIBC_2.12 sem_init F +GLIBC_2.12 sem_open F GLIBC_2.13 __fentry__ F GLIBC_2.14 syncfs F GLIBC_2.15 __fdelt_chk F @@ -2669,9 +2671,11 @@ 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_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.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 8d04328062..c7e8bc5a32 100644 --- a/sysdeps/mach/hurd/i386/libpthread.abilist +++ b/sysdeps/mach/hurd/i386/libpthread.abilist @@ -24,8 +24,6 @@ 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_close 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 diff --git a/sysdeps/mach/hurd/x86_64/libc.abilist b/sysdeps/mach/hurd/x86_64/libc.abilist index 3fc43370b2..e64bf542ef 100644 --- a/sysdeps/mach/hurd/x86_64/libc.abilist +++ b/sysdeps/mach/hurd/x86_64/libc.abilist @@ -1759,9 +1759,11 @@ 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_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 semctl F GLIBC_2.38 semget F GLIBC_2.38 semop F @@ -2350,9 +2352,11 @@ 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_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 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 a612aa9a11..ee0fac300c 100644 --- a/sysdeps/mach/hurd/x86_64/libpthread.abilist +++ b/sysdeps/mach/hurd/x86_64/libpthread.abilist @@ -44,8 +44,6 @@ 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_close 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 diff --git a/sysdeps/pthread/sem_close.c b/sysdeps/pthread/sem_close.c index e989ed8f60..6e80bb0a06 100644 --- a/sysdeps/pthread/sem_close.c +++ b/sysdeps/pthread/sem_close.c @@ -18,6 +18,7 @@ #include <errno.h> #include "semaphoreP.h" #include <sem_routines.h> +#include <shlib-compat.h> int __sem_close (sem_t *sem) @@ -30,11 +31,14 @@ __sem_close (sem_t *sem) return 0; } -#if PTHREAD_IN_LIBC +#ifndef __PTHREAD_HTL versioned_symbol (libc, __sem_close, sem_close, GLIBC_2_34); # if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_1_1, GLIBC_2_34) compat_symbol (libpthread, __sem_close, sem_close, GLIBC_2_1_1); # endif -#else /* !PTHREAD_IN_LIBC */ -strong_alias (__sem_close, sem_close) +#else /* __PTHREAD_HTL */ +versioned_symbol (libc, __sem_close, sem_close, GLIBC_2_43); +# if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_12, GLIBC_2_43) +compat_symbol (libpthread, __sem_close, sem_close, GLIBC_2_12); +#endif #endif diff --git a/sysdeps/pthread/sem_open.c b/sysdeps/pthread/sem_open.c index e5eacb5fed..992786e01b 100644 --- a/sysdeps/pthread/sem_open.c +++ b/sysdeps/pthread/sem_open.c @@ -25,13 +25,8 @@ #include <sem_routines.h> #include <futex-internal.h> #include <libc-lock.h> - - -#if !PTHREAD_IN_LIBC -/* The private names are not exported from libc. */ -# define __link link -# define __unlink unlink -#endif +#include <string.h> +#include <shlib-compat.h> #define SEM_OPEN_FLAGS (O_RDWR | O_NOFOLLOW | O_CLOEXEC) @@ -215,11 +210,14 @@ out: return result; } -#if PTHREAD_IN_LIBC +#ifndef __PTHREAD_HTL versioned_symbol (libc, __sem_open, sem_open, GLIBC_2_34); # if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_1_1, GLIBC_2_34) compat_symbol (libpthread, __sem_open, sem_open, GLIBC_2_1_1); # endif -#else /* !PTHREAD_IN_LIBC */ -strong_alias (__sem_open, sem_open) +#else /* __PTHREAD_HTL */ +versioned_symbol (libc, __sem_open, sem_open, GLIBC_2_43); +# if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_12, GLIBC_2_43) +compat_symbol (libpthread, __sem_open, sem_open, GLIBC_2_12); +#endif #endif diff --git a/sysdeps/pthread/sem_routines.c b/sysdeps/pthread/sem_routines.c index 62089359ea..fb6a555bf6 100644 --- a/sysdeps/pthread/sem_routines.c +++ b/sysdeps/pthread/sem_routines.c @@ -20,6 +20,7 @@ #include <semaphoreP.h> #include <sys/mman.h> #include <sem_routines.h> +#include <string.h> /* Keeping track of currently used mappings. */ struct inuse_sem -- 2.47.2