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


Reply via email to