[PATCH 3/3] htl: move pthread_sigmask into libc.

gfleury gfleury@disroot.org
Thu Dec 12 22:06:12 GMT 2024


---
 htl/Makefile                                |  2 +-
 htl/Versions                                |  4 +++-
 htl/pt-sigmask.c                            | 10 ++++++++--
 sysdeps/htl/pthreadP.h                      |  2 ++
 sysdeps/htl/timer_routines.c                |  6 +++---
 sysdeps/mach/hurd/gai_misc.h                |  8 ++++----
 sysdeps/mach/hurd/i386/libc.abilist         |  2 ++
 sysdeps/mach/hurd/i386/libpthread.abilist   |  1 -
 sysdeps/mach/hurd/x86_64/libc.abilist       |  2 ++
 sysdeps/mach/hurd/x86_64/libpthread.abilist |  1 -
 10 files changed, 25 insertions(+), 13 deletions(-)

diff --git a/htl/Makefile b/htl/Makefile
index 2e14f129..7f40fd91 100644
--- a/htl/Makefile
+++ b/htl/Makefile
@@ -48,7 +48,6 @@ libpthread-routines := \
   pt-exit \
   pt-initialize \
   pt-join \
-  pt-sigmask \
   pt-spin-inlines \
   pt-cleanup \
   pt-setcancelstate \
@@ -209,6 +208,7 @@ routines := \
   pt-pthread_self \
   pt-self pt-equal \
   pt-setschedparam \
+  pt-sigmask \
   pt-sigstate \
   pt-sigstate-destroy \
   # routines
diff --git a/htl/Versions b/htl/Versions
index 5ea9887b..dd786f79 100644
--- a/htl/Versions
+++ b/htl/Versions
@@ -32,6 +32,7 @@ libc {
     pthread_condattr_getpshared;
     pthread_condattr_setclock;
     pthread_condattr_setpshared;
+    pthread_sigmask;
   }
 
   GLIBC_2.21 {
@@ -74,6 +75,7 @@ libc {
     pthread_condattr_getpshared;
     pthread_condattr_setclock;
     pthread_condattr_setpshared;
+    pthread_sigmask;
   }
 
 
@@ -96,6 +98,7 @@ libc {
     __pthread_default_condattr;
     __pthread_sigstate;
     __pthread_sigstate_destroy;
+    __pthread_sigmask;
   }
 }
 
@@ -173,7 +176,6 @@ libpthread {
     pthread_setconcurrency;
     pthread_setschedprio; pthread_setspecific;
 
-    pthread_sigmask;
     pthread_testcancel;
     pthread_yield;
 
diff --git a/htl/pt-sigmask.c b/htl/pt-sigmask.c
index 81ec6b0f..2405cbed 100644
--- a/htl/pt-sigmask.c
+++ b/htl/pt-sigmask.c
@@ -18,14 +18,20 @@
 
 #include <pthread.h>
 #include <signal.h>
-
+#include <shlib-compat.h>
 #include <pt-internal.h>
 
 int
-pthread_sigmask (int how, const sigset_t *set, sigset_t *oset)
+__pthread_sigmask (int how, const sigset_t *set, sigset_t *oset)
 {
   struct __pthread *self = _pthread_self ();
 
   /* Do not clear SELF's pending signals.  */
   return __pthread_sigstate (self, how, set, oset, 0);
 }
+libc_hidden_def (__pthread_sigmask)
+versioned_symbol (libc, __pthread_sigmask, pthread_sigmask, GLIBC_2_41);
+
+#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_12, GLIBC_2_41)
+compat_symbol (libpthread, __pthread_sigmask, pthread_sigmask, GLIBC_2_12);
+#endif
diff --git a/sysdeps/htl/pthreadP.h b/sysdeps/htl/pthreadP.h
index afdf2cbd..adb81bc2 100644
--- a/sysdeps/htl/pthreadP.h
+++ b/sysdeps/htl/pthreadP.h
@@ -55,6 +55,8 @@ extern int __pthread_cond_clockwait (pthread_cond_t *cond,
 				     const struct timespec *abstime)
   __nonnull ((1, 2, 4));
 extern int __pthread_cond_destroy (pthread_cond_t *cond);
+extern int __pthread_sigmask (int, const sigset_t *, sigset_t *);
+libc_hidden_proto (__pthread_sigmask);
 
 typedef struct __cthread *__cthread_t;
 typedef int __cthread_key_t;
diff --git a/sysdeps/htl/timer_routines.c b/sysdeps/htl/timer_routines.c
index 857b1cbb..3a63de6b 100644
--- a/sysdeps/htl/timer_routines.c
+++ b/sysdeps/htl/timer_routines.c
@@ -18,7 +18,7 @@
 
 #include <assert.h>
 #include <errno.h>
-#include <pthread.h>
+#include <pthreadP.h>
 #include <stddef.h>
 #include <stdlib.h>
 #include <string.h>
@@ -468,7 +468,7 @@ __timer_thread_start (struct thread_node *thread)
   thread->exists = 1;
 
   sigfillset (&set);
-  pthread_sigmask (SIG_SETMASK, &set, &oset);
+  __pthread_sigmask (SIG_SETMASK, &set, &oset);
 
   if (pthread_create (&thread->id, &thread->attr,
 		      (void *(*) (void *)) thread_func, thread) != 0)
@@ -477,7 +477,7 @@ __timer_thread_start (struct thread_node *thread)
       retval = -1;
     }
 
-  pthread_sigmask (SIG_SETMASK, &oset, NULL);
+  __pthread_sigmask (SIG_SETMASK, &oset, NULL);
 
   return retval;
 }
diff --git a/sysdeps/mach/hurd/gai_misc.h b/sysdeps/mach/hurd/gai_misc.h
index bd26ec31..d822509f 100644
--- a/sysdeps/mach/hurd/gai_misc.h
+++ b/sysdeps/mach/hurd/gai_misc.h
@@ -17,7 +17,7 @@
 
 #include <assert.h>
 #include <signal.h>
-#include <pthread.h>
+#include <pthreadP.h>
 
 #define gai_start_notify_thread __gai_start_notify_thread
 #define gai_create_helper_thread __gai_create_helper_thread
@@ -28,7 +28,7 @@ __gai_start_notify_thread (void)
   sigset_t ss;
   sigemptyset (&ss);
   int sigerr __attribute__ ((unused));
-  sigerr = pthread_sigmask (SIG_SETMASK, &ss, NULL);
+  sigerr = __pthread_sigmask (SIG_SETMASK, &ss, NULL);
   assert_perror (sigerr);
 }
 
@@ -51,13 +51,13 @@ __gai_create_helper_thread (pthread_t *threadp, void *(*tf) (void *),
   sigset_t oss;
   sigfillset (&ss);
   int sigerr __attribute__ ((unused));
-  sigerr = pthread_sigmask (SIG_SETMASK, &ss, &oss);
+  sigerr = __pthread_sigmask (SIG_SETMASK, &ss, &oss);
   assert_perror (sigerr);
 
   int ret = pthread_create (threadp, &attr, tf, arg);
 
   /* Restore the signal mask.  */
-  sigerr = pthread_sigmask (SIG_SETMASK, &oss, NULL);
+  sigerr = __pthread_sigmask (SIG_SETMASK, &oss, NULL);
   assert_perror (sigerr);
 
   (void) pthread_attr_destroy (&attr);
diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist
index 76ded62c..f4613aad 100644
--- a/sysdeps/mach/hurd/i386/libc.abilist
+++ b/sysdeps/mach/hurd/i386/libc.abilist
@@ -59,6 +59,7 @@ GLIBC_2.12 pthread_equal F
 GLIBC_2.12 pthread_getschedparam F
 GLIBC_2.12 pthread_self F
 GLIBC_2.12 pthread_setschedparam F
+GLIBC_2.12 pthread_sigmask F
 GLIBC_2.13 __fentry__ F
 GLIBC_2.14 syncfs F
 GLIBC_2.15 __fdelt_chk F
@@ -2513,6 +2514,7 @@ GLIBC_2.41 pthread_condattr_getclock F
 GLIBC_2.41 pthread_condattr_getpshared F
 GLIBC_2.41 pthread_condattr_setclock F
 GLIBC_2.41 pthread_condattr_setpshared F
+GLIBC_2.41 pthread_sigmask 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 72cb549b..e5b3edbe 100644
--- a/sysdeps/mach/hurd/i386/libpthread.abilist
+++ b/sysdeps/mach/hurd/i386/libpthread.abilist
@@ -85,7 +85,6 @@ GLIBC_2.12 pthread_setcanceltype F
 GLIBC_2.12 pthread_setconcurrency F
 GLIBC_2.12 pthread_setschedprio F
 GLIBC_2.12 pthread_setspecific F
-GLIBC_2.12 pthread_sigmask F
 GLIBC_2.12 pthread_spin_destroy F
 GLIBC_2.12 pthread_spin_init F
 GLIBC_2.12 pthread_spin_lock F
diff --git a/sysdeps/mach/hurd/x86_64/libc.abilist b/sysdeps/mach/hurd/x86_64/libc.abilist
index c2ee0b1c..b331c26e 100644
--- a/sysdeps/mach/hurd/x86_64/libc.abilist
+++ b/sysdeps/mach/hurd/x86_64/libc.abilist
@@ -1554,6 +1554,7 @@ GLIBC_2.38 pthread_self F
 GLIBC_2.38 pthread_setcancelstate F
 GLIBC_2.38 pthread_setcanceltype F
 GLIBC_2.38 pthread_setschedparam F
+GLIBC_2.38 pthread_sigmask F
 GLIBC_2.38 ptrace F
 GLIBC_2.38 ptsname F
 GLIBC_2.38 ptsname_r F
@@ -2208,6 +2209,7 @@ GLIBC_2.41 pthread_condattr_getclock F
 GLIBC_2.41 pthread_condattr_getpshared F
 GLIBC_2.41 pthread_condattr_setclock F
 GLIBC_2.41 pthread_condattr_setpshared F
+GLIBC_2.41 pthread_sigmask 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 bdadfd76..89a63043 100644
--- a/sysdeps/mach/hurd/x86_64/libpthread.abilist
+++ b/sysdeps/mach/hurd/x86_64/libpthread.abilist
@@ -115,7 +115,6 @@ GLIBC_2.38 pthread_setcanceltype F
 GLIBC_2.38 pthread_setconcurrency F
 GLIBC_2.38 pthread_setschedprio F
 GLIBC_2.38 pthread_setspecific F
-GLIBC_2.38 pthread_sigmask F
 GLIBC_2.38 pthread_spin_destroy F
 GLIBC_2.38 pthread_spin_init F
 GLIBC_2.38 pthread_spin_lock F
-- 
2.39.5



More information about the Libc-alpha mailing list