aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgfleury <gfleury@disroot.org>2025-08-17 12:40:19 +0200
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2025-08-18 00:55:18 +0200
commit50f5ddc20abe4c389f2b8c4f34164ae3f330bb80 (patch)
tree5f484bad8df0a6f0623bd9b124847e0fdbb5b828
parentb2b6d32f11bad38e1ec036f5127f703ca29560aa (diff)
downloadglibc-50f5ddc20abe4c389f2b8c4f34164ae3f330bb80.zip
glibc-50f5ddc20abe4c389f2b8c4f34164ae3f330bb80.tar.gz
glibc-50f5ddc20abe4c389f2b8c4f34164ae3f330bb80.tar.bz2
htl: move sem_open, sem_close into libc.
Message-ID: <20250817104023.91919-5-gfleury@disroot.org>
-rw-r--r--htl/Makefile6
-rw-r--r--htl/Versions6
-rw-r--r--sysdeps/mach/hurd/i386/libc.abilist4
-rw-r--r--sysdeps/mach/hurd/i386/libpthread.abilist2
-rw-r--r--sysdeps/mach/hurd/x86_64/libc.abilist4
-rw-r--r--sysdeps/mach/hurd/x86_64/libpthread.abilist2
-rw-r--r--sysdeps/pthread/sem_close.c10
-rw-r--r--sysdeps/pthread/sem_open.c18
-rw-r--r--sysdeps/pthread/sem_routines.c1
9 files changed, 32 insertions, 21 deletions
diff --git a/htl/Makefile b/htl/Makefile
index 33dfdc5..57327b3 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 764faa0..5b83e1c 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 02bc296..9764b60 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 8d04328..c7e8bc5 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 3fc4337..e64bf54 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 a612aa9..ee0fac3 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 e989ed8..6e80bb0 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 e5eacb5..992786e 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 6208935..fb6a555 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