public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
* [PATCH 0/3] htl: move __pthtread_total, ___pthread_self, pthread_self
@ 2023-01-03 10:45 Guy-Fleury Iteriteka
  2023-01-03 10:45 ` [PATCH 1/3] htl: move __pthtread_total into libc Guy-Fleury Iteriteka
                   ` (5 more replies)
  0 siblings, 6 replies; 12+ messages in thread
From: Guy-Fleury Iteriteka @ 2023-01-03 10:45 UTC (permalink / raw)
  To: libc-alpha; +Cc: bug-hurd

With this patch i boot up a hurd system with flavio scripts.

Guy-Fleury Iteriteka (3):
  htl: move __pthtread_total into libc
  htl: move __pthread_self into libc.
  htl: move pthread_self into libc

 htl/Makefile                              |  3 +--
 htl/Versions                              | 15 ++++++++++++---
 htl/forward.c                             |  4 ----
 htl/pt-create.c                           |  6 ------
 htl/pt-initialize.c                       |  1 -
 htl/pt-internal.h                         |  2 ++
 htl/pt-nthreads.c                         | 23 +++++++++++++++++++++++
 htl/pt-self.c                             |  8 ++++++--
 sysdeps/htl/pthread-functions.h           |  2 --
 sysdeps/mach/hurd/htl/pt-pthread_self.c   | 22 ++++++++++++++++++++++
 sysdeps/mach/hurd/htl/pt-sysdep.c         |  2 --
 sysdeps/mach/hurd/htl/pt-sysdep.h         |  3 +++
 sysdeps/mach/hurd/i386/libc.abilist       |  2 ++
 sysdeps/mach/hurd/i386/libpthread.abilist |  2 --
 14 files changed, 71 insertions(+), 24 deletions(-)
 create mode 100644 htl/pt-nthreads.c
 create mode 100644 sysdeps/mach/hurd/htl/pt-pthread_self.c

-- 
2.38.1


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH 1/3] htl: move __pthtread_total into libc
  2023-01-03 10:45 [PATCH 0/3] htl: move __pthtread_total, ___pthread_self, pthread_self Guy-Fleury Iteriteka
@ 2023-01-03 10:45 ` Guy-Fleury Iteriteka
  2023-01-03 10:45 ` [PATCH 2/3] htl: move ___pthread_self " Guy-Fleury Iteriteka
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 12+ messages in thread
From: Guy-Fleury Iteriteka @ 2023-01-03 10:45 UTC (permalink / raw)
  To: libc-alpha; +Cc: bug-hurd

htl/pt-nthreads.c: new file.
htl/Makefile: Add it to routine.
htl/Versions: version it as private libc symbol.
htl/pt-create.c: remove his definition here.
htl/pt-internal.h: add propertie to it declaration.
---
 htl/Makefile      |  2 +-
 htl/Versions      |  1 +
 htl/pt-create.c   |  6 ------
 htl/pt-internal.h |  1 +
 htl/pt-nthreads.c | 23 +++++++++++++++++++++++
 5 files changed, 26 insertions(+), 7 deletions(-)
 create mode 100644 htl/pt-nthreads.c

diff --git a/htl/Makefile b/htl/Makefile
index 0b403e2f..61944148 100644
--- a/htl/Makefile
+++ b/htl/Makefile
@@ -164,7 +164,7 @@ headers :=				\
 
 distribute :=
 
-routines := forward libc_pthread_init alloca_cutoff htlfreeres
+routines := forward libc_pthread_init alloca_cutoff htlfreeres pt-nthreads
 shared-only-routines = forward
 
 extra-libs := libpthread
diff --git a/htl/Versions b/htl/Versions
index 4e0ebac2..113110f4 100644
--- a/htl/Versions
+++ b/htl/Versions
@@ -30,6 +30,7 @@ libc {
     __libc_alloca_cutoff;
     __libc_pthread_init;
     __pthread_cleanup_stack;
+    __pthread_total;
   }
 }
 
diff --git a/htl/pt-create.c b/htl/pt-create.c
index 5d37edbb..34a63b6a 100644
--- a/htl/pt-create.c
+++ b/htl/pt-create.c
@@ -36,12 +36,6 @@
 # include <locale.h>
 #endif
 
-/* The total number of pthreads currently active.  This is defined
-   here since it would be really stupid to have a threads-using
-   program that doesn't call `pthread_create'.  */
-unsigned int __pthread_total;
-\f
-
 /* The entry-point for new threads.  */
 static void
 entry_point (struct __pthread *self, void *(*start_routine) (void *), void *arg)
diff --git a/htl/pt-internal.h b/htl/pt-internal.h
index f01cb7ce..b787acf8 100644
--- a/htl/pt-internal.h
+++ b/htl/pt-internal.h
@@ -165,6 +165,7 @@ __pthread_dequeue (struct __pthread *thread)
 
 /* The total number of threads currently active.  */
 extern unsigned int __pthread_total;
+libc_hidden_proto (__pthread_total)
 
 /* Concurrency hint.  */
 extern int __pthread_concurrency;
diff --git a/htl/pt-nthreads.c b/htl/pt-nthreads.c
new file mode 100644
index 00000000..9a6140ee
--- /dev/null
+++ b/htl/pt-nthreads.c
@@ -0,0 +1,23 @@
+/* Thread counter variable.
+   Copyright (C) 2021-2023 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include <pt-internal.h>
+
+/* Number of threads running.  */
+unsigned int __pthread_total;
+libc_hidden_data_def (__pthread_total)
-- 
2.38.1


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH 2/3] htl: move ___pthread_self into libc.
  2023-01-03 10:45 [PATCH 0/3] htl: move __pthtread_total, ___pthread_self, pthread_self Guy-Fleury Iteriteka
  2023-01-03 10:45 ` [PATCH 1/3] htl: move __pthtread_total into libc Guy-Fleury Iteriteka
@ 2023-01-03 10:45 ` Guy-Fleury Iteriteka
  2023-01-03 10:45 ` [PATCH 3/3] htl: move pthread_self " Guy-Fleury Iteriteka
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 12+ messages in thread
From: Guy-Fleury Iteriteka @ 2023-01-03 10:45 UTC (permalink / raw)
  To: libc-alpha; +Cc: bug-hurd

sysdeps/mach/hurd/htl/pt-pthread_self.c: New file.
htl/Makefile: .. Add it to libc routine.
sysdeps/mach/hurd/htl/pt-sysdep.c(__pthread_self): Remove it.
sysdeps/mach/hurd/htl/pt-sysdep.h(__pthread_self): Add hidden propertie.
htl/Versions(__pthread_self) Version it as private symbol.
---
 htl/Makefile                            |  2 +-
 htl/Versions                            |  1 +
 sysdeps/mach/hurd/htl/pt-pthread_self.c | 22 ++++++++++++++++++++++
 sysdeps/mach/hurd/htl/pt-sysdep.c       |  2 --
 sysdeps/mach/hurd/htl/pt-sysdep.h       |  3 +++
 5 files changed, 27 insertions(+), 3 deletions(-)
 create mode 100644 sysdeps/mach/hurd/htl/pt-pthread_self.c

diff --git a/htl/Makefile b/htl/Makefile
index 61944148..b569cfcd 100644
--- a/htl/Makefile
+++ b/htl/Makefile
@@ -164,7 +164,7 @@ headers :=				\
 
 distribute :=
 
-routines := forward libc_pthread_init alloca_cutoff htlfreeres pt-nthreads
+routines := forward libc_pthread_init alloca_cutoff htlfreeres pt-nthreads pt-pthread_self
 shared-only-routines = forward
 
 extra-libs := libpthread
diff --git a/htl/Versions b/htl/Versions
index 113110f4..9ec84811 100644
--- a/htl/Versions
+++ b/htl/Versions
@@ -31,6 +31,7 @@ libc {
     __libc_pthread_init;
     __pthread_cleanup_stack;
     __pthread_total;
+    ___pthread_self;
   }
 }
 
diff --git a/sysdeps/mach/hurd/htl/pt-pthread_self.c b/sysdeps/mach/hurd/htl/pt-pthread_self.c
new file mode 100644
index 00000000..6398af65
--- /dev/null
+++ b/sysdeps/mach/hurd/htl/pt-pthread_self.c
@@ -0,0 +1,22 @@
+/* Thread counter variable.
+   Copyright (C) 2021-2023 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include <pt-sysdep.h>
+
+__thread struct __pthread *___pthread_self;
+libc_hidden_tls_def (___pthread_self)
diff --git a/sysdeps/mach/hurd/htl/pt-sysdep.c b/sysdeps/mach/hurd/htl/pt-sysdep.c
index 2d828545..4cd6ba3a 100644
--- a/sysdeps/mach/hurd/htl/pt-sysdep.c
+++ b/sysdeps/mach/hurd/htl/pt-sysdep.c
@@ -26,8 +26,6 @@
 #include <pt-internal.h>
 #include <pthreadP.h>
 
-__thread struct __pthread *___pthread_self;
-
 static void
 reset_pthread_total (void)
 {
diff --git a/sysdeps/mach/hurd/htl/pt-sysdep.h b/sysdeps/mach/hurd/htl/pt-sysdep.h
index 854c365c..94d77678 100644
--- a/sysdeps/mach/hurd/htl/pt-sysdep.h
+++ b/sysdeps/mach/hurd/htl/pt-sysdep.h
@@ -19,6 +19,7 @@
 #ifndef _PT_SYSDEP_H
 #define _PT_SYSDEP_H	1
 
+#include <stddef.h>
 #include <mach.h>
 
 /* XXX */
@@ -32,6 +33,8 @@
   mach_msg_header_t wakeupmsg;
 
 extern __thread struct __pthread *___pthread_self;
+libc_hidden_tls_proto (___pthread_self)
+
 #ifdef DEBUG
 #define _pthread_self()                                            \
 	({                                                         \
-- 
2.38.1


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH 3/3] htl: move pthread_self into libc
  2023-01-03 10:45 [PATCH 0/3] htl: move __pthtread_total, ___pthread_self, pthread_self Guy-Fleury Iteriteka
  2023-01-03 10:45 ` [PATCH 1/3] htl: move __pthtread_total into libc Guy-Fleury Iteriteka
  2023-01-03 10:45 ` [PATCH 2/3] htl: move ___pthread_self " Guy-Fleury Iteriteka
@ 2023-01-03 10:45 ` Guy-Fleury Iteriteka
  2023-01-03 21:50   ` Samuel Thibault
  2023-01-03 17:22 ` [PATCH 0/3] htl: move __pthtread_total, ___pthread_self, pthread_self Zack Weinberg
                   ` (2 subsequent siblings)
  5 siblings, 1 reply; 12+ messages in thread
From: Guy-Fleury Iteriteka @ 2023-01-03 10:45 UTC (permalink / raw)
  To: libc-alpha; +Cc: bug-hurd

---
 htl/Makefile                              |  3 +--
 htl/Versions                              | 13 ++++++++++---
 htl/forward.c                             |  4 ----
 htl/pt-initialize.c                       |  1 -
 htl/pt-internal.h                         |  1 +
 htl/pt-self.c                             |  8 ++++++--
 sysdeps/htl/pthread-functions.h           |  2 --
 sysdeps/mach/hurd/i386/libc.abilist       |  2 ++
 sysdeps/mach/hurd/i386/libpthread.abilist |  2 --
 9 files changed, 20 insertions(+), 16 deletions(-)

diff --git a/htl/Makefile b/htl/Makefile
index b569cfcd..c75855ad 100644
--- a/htl/Makefile
+++ b/htl/Makefile
@@ -52,7 +52,6 @@ libpthread-routines := pt-attr pt-attr-destroy pt-attr-getdetachstate	    \
 	pt-exit								    \
 	pt-initialize							    \
 	pt-join								    \
-	pt-self								    \
 	pt-sigmask							    \
 	pt-spin-inlines							    \
 	pt-cleanup							    \
@@ -164,7 +163,7 @@ headers :=				\
 
 distribute :=
 
-routines := forward libc_pthread_init alloca_cutoff htlfreeres pt-nthreads pt-pthread_self
+routines := forward libc_pthread_init alloca_cutoff htlfreeres pt-nthreads pt-pthread_self pt-self
 shared-only-routines = forward
 
 extra-libs := libpthread
diff --git a/htl/Versions b/htl/Versions
index 9ec84811..e1cb362c 100644
--- a/htl/Versions
+++ b/htl/Versions
@@ -1,4 +1,9 @@
 libc {
+  GLIBC_2.12 {
+     pthread_self;
+    __pthread_self;
+  }
+
   GLIBC_2.21 {
     pthread_attr_destroy; pthread_attr_getdetachstate;
     pthread_attr_getinheritsched; pthread_attr_getschedparam;
@@ -26,6 +31,11 @@ libc {
     thrd_current; thrd_equal; thrd_sleep; thrd_yield;
   }
 
+  GLIBC_2.37 {
+    pthread_self;
+    __pthread_self;
+  }
+
   GLIBC_PRIVATE {
     __libc_alloca_cutoff;
     __libc_pthread_init;
@@ -119,9 +129,6 @@ libpthread {
     pthread_rwlockattr_destroy; pthread_rwlockattr_getpshared;
     pthread_rwlockattr_init; pthread_rwlockattr_setpshared;
 
-    pthread_self;
-    __pthread_self;
-
     pthread_setcancelstate; pthread_setcanceltype;
     pthread_setconcurrency; pthread_setschedparam;
     pthread_setschedprio; pthread_setspecific;
diff --git a/htl/forward.c b/htl/forward.c
index 00527348..57b0b66c 100644
--- a/htl/forward.c
+++ b/htl/forward.c
@@ -130,10 +130,6 @@ FORWARD (pthread_mutex_lock, (pthread_mutex_t *mutex), (mutex), 0)
 
 FORWARD (pthread_mutex_unlock, (pthread_mutex_t *mutex), (mutex), 0)
 
-
-FORWARD2 (pthread_self, pthread_t, (void), (), return 0)
-
-
 FORWARD (__pthread_setcancelstate, (int state, int *oldstate),
 	 (state, oldstate), 0)
 strong_alias (__pthread_setcancelstate, pthread_setcancelstate);
diff --git a/htl/pt-initialize.c b/htl/pt-initialize.c
index 02e6ad6b..fcad3b13 100644
--- a/htl/pt-initialize.c
+++ b/htl/pt-initialize.c
@@ -56,7 +56,6 @@ static const struct pthread_functions pthread_functions = {
   .ptr_pthread_mutex_lock = __pthread_mutex_lock,
   .ptr_pthread_mutex_trylock = __pthread_mutex_trylock,
   .ptr_pthread_mutex_unlock = __pthread_mutex_unlock,
-  .ptr_pthread_self = __pthread_self,
   .ptr___pthread_setcancelstate = __pthread_setcancelstate,
   .ptr_pthread_setcanceltype = __pthread_setcanceltype,
   .ptr___pthread_get_cleanup_stack = __pthread_get_cleanup_stack,
diff --git a/htl/pt-internal.h b/htl/pt-internal.h
index b787acf8..ade71b24 100644
--- a/htl/pt-internal.h
+++ b/htl/pt-internal.h
@@ -192,6 +192,7 @@ extern int __pthread_max_threads;
 extern struct __pthread *_pthread_self (void);
 #endif
 
+libc_hidden_proto (__pthread_self)
 /* Stores the stack of cleanup handlers for the thread.  */
 extern __thread struct __pthread_cancelation_handler *__pthread_cleanup_stack;
 \f
diff --git a/htl/pt-self.c b/htl/pt-self.c
index e05ec69b..dc37d5dc 100644
--- a/htl/pt-self.c
+++ b/htl/pt-self.c
@@ -17,7 +17,7 @@
    <https://www.gnu.org/licenses/>.  */
 
 #include <pthread.h>
-
+#include <shlib-compat.h>
 #include <pt-internal.h>
 
 /* Return the thread ID of the calling thread.  */
@@ -36,4 +36,8 @@ __pthread_self (void)
   return self->thread;
 }
 
-weak_alias (__pthread_self, pthread_self);
+libc_hidden_def (__pthread_self)
+versioned_symbol (libc, __pthread_self, pthread_self, GLIBC_2_37);
+#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_12, GLIBC_2_37)
+compat_symbol (libc, __pthread_self, pthread_self, GLIBC_2_12);
+#endif
\ No newline at end of file
diff --git a/sysdeps/htl/pthread-functions.h b/sysdeps/htl/pthread-functions.h
index ccccc8e5..2f0e3df0 100644
--- a/sysdeps/htl/pthread-functions.h
+++ b/sysdeps/htl/pthread-functions.h
@@ -56,7 +56,6 @@ int _pthread_mutex_init (pthread_mutex_t *,
 int __pthread_mutex_lock (pthread_mutex_t *);
 int __pthread_mutex_trylock (pthread_mutex_t *);
 int __pthread_mutex_unlock (pthread_mutex_t *);
-pthread_t __pthread_self (void);
 int __pthread_setcancelstate (int, int *);
 int __pthread_setcanceltype (int, int *);
 struct __pthread_cancelation_handler **__pthread_get_cleanup_stack (void);
@@ -112,7 +111,6 @@ struct pthread_functions
   int (*ptr_pthread_mutex_lock) (pthread_mutex_t *);
   int (*ptr_pthread_mutex_trylock) (pthread_mutex_t *);
   int (*ptr_pthread_mutex_unlock) (pthread_mutex_t *);
-  pthread_t (*ptr_pthread_self) (void);
   int (*ptr___pthread_setcancelstate) (int, int *);
   int (*ptr_pthread_setcanceltype) (int, int *);
   struct __pthread_cancelation_handler **(*ptr___pthread_get_cleanup_stack) (void);
diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist
index 4e3200ef..29b08e73 100644
--- a/sysdeps/mach/hurd/i386/libc.abilist
+++ b/sysdeps/mach/hurd/i386/libc.abilist
@@ -28,6 +28,7 @@ GLIBC_2.11 mkostemps F
 GLIBC_2.11 mkostemps64 F
 GLIBC_2.11 mkstemps F
 GLIBC_2.11 mkstemps64 F
+GLIBC_2.12 pthread_self F
 GLIBC_2.13 __fentry__ F
 GLIBC_2.14 syncfs F
 GLIBC_2.15 __fdelt_chk F
@@ -2294,6 +2295,7 @@ GLIBC_2.36 arc4random_buf F
 GLIBC_2.36 arc4random_uniform F
 GLIBC_2.36 c8rtomb F
 GLIBC_2.36 mbrtoc8 F
+GLIBC_2.37 pthread_self F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/mach/hurd/i386/libpthread.abilist b/sysdeps/mach/hurd/i386/libpthread.abilist
index b9c9b75c..2ef0f670 100644
--- a/sysdeps/mach/hurd/i386/libpthread.abilist
+++ b/sysdeps/mach/hurd/i386/libpthread.abilist
@@ -4,7 +4,6 @@ GLIBC_2.12 __pthread_get_cleanup_stack F
 GLIBC_2.12 __pthread_key_create F
 GLIBC_2.12 __pthread_kill F
 GLIBC_2.12 __pthread_mutex_transfer_np F
-GLIBC_2.12 __pthread_self F
 GLIBC_2.12 __pthread_spin_destroy F
 GLIBC_2.12 __pthread_spin_init F
 GLIBC_2.12 __pthread_spin_lock F
@@ -109,7 +108,6 @@ GLIBC_2.12 pthread_rwlockattr_destroy F
 GLIBC_2.12 pthread_rwlockattr_getpshared F
 GLIBC_2.12 pthread_rwlockattr_init F
 GLIBC_2.12 pthread_rwlockattr_setpshared F
-GLIBC_2.12 pthread_self F
 GLIBC_2.12 pthread_setcancelstate F
 GLIBC_2.12 pthread_setcanceltype F
 GLIBC_2.12 pthread_setconcurrency F
-- 
2.38.1


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 0/3] htl: move __pthtread_total, ___pthread_self, pthread_self
  2023-01-03 10:45 [PATCH 0/3] htl: move __pthtread_total, ___pthread_self, pthread_self Guy-Fleury Iteriteka
                   ` (2 preceding siblings ...)
  2023-01-03 10:45 ` [PATCH 3/3] htl: move pthread_self " Guy-Fleury Iteriteka
@ 2023-01-03 17:22 ` Zack Weinberg
  2023-01-03 18:28   ` Samuel Thibault
  2023-01-03 18:30   ` Guy-Fleury Iteriteka
  2023-01-03 21:50 ` Samuel Thibault
  2023-01-04  8:49 ` gfleury
  5 siblings, 2 replies; 12+ messages in thread
From: Zack Weinberg @ 2023-01-03 17:22 UTC (permalink / raw)
  To: Guy-Fleury Iteriteka; +Cc: libc-alpha, bug-hurd


> With this patch i boot up a hurd system with flavio scripts.

Can we get a link to these scripts, please?  So we know why they care
about these symbols being in libc.

zw

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 0/3] htl: move __pthtread_total, ___pthread_self, pthread_self
  2023-01-03 17:22 ` [PATCH 0/3] htl: move __pthtread_total, ___pthread_self, pthread_self Zack Weinberg
@ 2023-01-03 18:28   ` Samuel Thibault
  2023-01-09 21:59     ` Zack Weinberg
  2023-01-03 18:30   ` Guy-Fleury Iteriteka
  1 sibling, 1 reply; 12+ messages in thread
From: Samuel Thibault @ 2023-01-03 18:28 UTC (permalink / raw)
  To: Zack Weinberg; +Cc: Guy-Fleury Iteriteka, libc-alpha, bug-hurd

Hello,

Zack Weinberg via Libc-alpha, le mar. 03 janv. 2023 12:22:20 -0500, a ecrit:
> > With this patch i boot up a hurd system with flavio scripts.
> 
> Can we get a link to these scripts, please?  So we know why they care
> about these symbols being in libc.

He just means that he was able to check the change with a Hurd system
built by flavio scripts. Those scripts work fine without the change, the
change is meant to move pthread symbols from libpthread.so to libc.so,
like was done for NPTL.

Samuel

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 0/3] htl: move __pthtread_total, ___pthread_self, pthread_self
  2023-01-03 17:22 ` [PATCH 0/3] htl: move __pthtread_total, ___pthread_self, pthread_self Zack Weinberg
  2023-01-03 18:28   ` Samuel Thibault
@ 2023-01-03 18:30   ` Guy-Fleury Iteriteka
  1 sibling, 0 replies; 12+ messages in thread
From: Guy-Fleury Iteriteka @ 2023-01-03 18:30 UTC (permalink / raw)
  To: Zack Weinberg; +Cc: libc-alpha, bug-hurd



On January 3, 2023 7:22:20 PM GMT+02:00, Zack Weinberg <zack@owlfolio.org> wrote:
>
>> With this patch i boot up a hurd system with flavio scripts.
>
>Can we get a link to these scripts, please?  So we know why they care
>about these symbols being in libc.

https://github.com/flavioc/cross-hurd

We are trying to move htl(hurd pthread library) like it was done for linux nptl.

>
>zw

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 3/3] htl: move pthread_self into libc
  2023-01-03 10:45 ` [PATCH 3/3] htl: move pthread_self " Guy-Fleury Iteriteka
@ 2023-01-03 21:50   ` Samuel Thibault
  2023-01-03 23:02     ` Samuel Thibault
  0 siblings, 1 reply; 12+ messages in thread
From: Samuel Thibault @ 2023-01-03 21:50 UTC (permalink / raw)
  To: Guy-Fleury Iteriteka; +Cc: libc-alpha, bug-hurd

Hello,

Make sure to run the abi checks, you can e.g. run from the build
directory:

make -C $src_dir/elf objdir=$PWD subdir=elf ..=../ $PWD/elf/check-localplt.out
make -C $src_dir/elf objdir=$PWD subdir=elf ..=../ $PWD/elf/check-abi-libc.out
make -C $src_dir/htl objdir=$PWD subdir=htl ..=../ $PWD/elf/check-abi-libpthread.out

It will show this issue:

@@ -30,0 +31 @@ GLIBC_2.11 mkstemps64 F
+GLIBC_2.12 __pthread_self F
@@ -2006 +2006,0 @@ GLIBC_2.21 pthread_mutex_unlock F
-GLIBC_2.21 pthread_self F

You indeed need to tell that __pthread_self is now exported by glibc.

And your change drops the 2.21 version that was coming from forward.c,
we need to keep it. So you need to add it as a compat symbol, something
like:

+#if SHLIB_COMPAT (libc, GLIBC_2_21, GLIBC_2_37)
+compat_symbol (libc, __pthread_self, pthread_self, GLIBC_2_21);
+#endif

Concerning check-localplt.out:
Extra PLT reference: libc.so: __pthread_self

it means that some C file is not getting access to the hidden
declaration. That's because you have put the hidden declaration in
htl/pt-internal.h, while it should go to ./sysdeps/htl/pthreadP.h so
that various code get it from there like they do with NPTL.
(generally, if in doubt, look at how NPTL does things).

Samuel

Guy-Fleury Iteriteka via Libc-alpha, le mar. 03 janv. 2023 12:45:15 +0200, a ecrit:
> ---
>  htl/Makefile                              |  3 +--
>  htl/Versions                              | 13 ++++++++++---
>  htl/forward.c                             |  4 ----
>  htl/pt-initialize.c                       |  1 -
>  htl/pt-internal.h                         |  1 +
>  htl/pt-self.c                             |  8 ++++++--
>  sysdeps/htl/pthread-functions.h           |  2 --
>  sysdeps/mach/hurd/i386/libc.abilist       |  2 ++
>  sysdeps/mach/hurd/i386/libpthread.abilist |  2 --
>  9 files changed, 20 insertions(+), 16 deletions(-)
> 
> diff --git a/htl/Makefile b/htl/Makefile
> index b569cfcd..c75855ad 100644
> --- a/htl/Makefile
> +++ b/htl/Makefile
> @@ -52,7 +52,6 @@ libpthread-routines := pt-attr pt-attr-destroy pt-attr-getdetachstate	    \
>  	pt-exit								    \
>  	pt-initialize							    \
>  	pt-join								    \
> -	pt-self								    \
>  	pt-sigmask							    \
>  	pt-spin-inlines							    \
>  	pt-cleanup							    \
> @@ -164,7 +163,7 @@ headers :=				\
>  
>  distribute :=
>  
> -routines := forward libc_pthread_init alloca_cutoff htlfreeres pt-nthreads pt-pthread_self
> +routines := forward libc_pthread_init alloca_cutoff htlfreeres pt-nthreads pt-pthread_self pt-self
>  shared-only-routines = forward
>  
>  extra-libs := libpthread
> diff --git a/htl/Versions b/htl/Versions
> index 9ec84811..e1cb362c 100644
> --- a/htl/Versions
> +++ b/htl/Versions
> @@ -1,4 +1,9 @@
>  libc {
> +  GLIBC_2.12 {
> +     pthread_self;
> +    __pthread_self;
> +  }
> +
>    GLIBC_2.21 {
>      pthread_attr_destroy; pthread_attr_getdetachstate;
>      pthread_attr_getinheritsched; pthread_attr_getschedparam;
> @@ -26,6 +31,11 @@ libc {
>      thrd_current; thrd_equal; thrd_sleep; thrd_yield;
>    }
>  
> +  GLIBC_2.37 {
> +    pthread_self;
> +    __pthread_self;
> +  }
> +
>    GLIBC_PRIVATE {
>      __libc_alloca_cutoff;
>      __libc_pthread_init;
> @@ -119,9 +129,6 @@ libpthread {
>      pthread_rwlockattr_destroy; pthread_rwlockattr_getpshared;
>      pthread_rwlockattr_init; pthread_rwlockattr_setpshared;
>  
> -    pthread_self;
> -    __pthread_self;
> -
>      pthread_setcancelstate; pthread_setcanceltype;
>      pthread_setconcurrency; pthread_setschedparam;
>      pthread_setschedprio; pthread_setspecific;
> diff --git a/htl/forward.c b/htl/forward.c
> index 00527348..57b0b66c 100644
> --- a/htl/forward.c
> +++ b/htl/forward.c
> @@ -130,10 +130,6 @@ FORWARD (pthread_mutex_lock, (pthread_mutex_t *mutex), (mutex), 0)
>  
>  FORWARD (pthread_mutex_unlock, (pthread_mutex_t *mutex), (mutex), 0)
>  
> -
> -FORWARD2 (pthread_self, pthread_t, (void), (), return 0)
> -
> -
>  FORWARD (__pthread_setcancelstate, (int state, int *oldstate),
>  	 (state, oldstate), 0)
>  strong_alias (__pthread_setcancelstate, pthread_setcancelstate);
> diff --git a/htl/pt-initialize.c b/htl/pt-initialize.c
> index 02e6ad6b..fcad3b13 100644
> --- a/htl/pt-initialize.c
> +++ b/htl/pt-initialize.c
> @@ -56,7 +56,6 @@ static const struct pthread_functions pthread_functions = {
>    .ptr_pthread_mutex_lock = __pthread_mutex_lock,
>    .ptr_pthread_mutex_trylock = __pthread_mutex_trylock,
>    .ptr_pthread_mutex_unlock = __pthread_mutex_unlock,
> -  .ptr_pthread_self = __pthread_self,
>    .ptr___pthread_setcancelstate = __pthread_setcancelstate,
>    .ptr_pthread_setcanceltype = __pthread_setcanceltype,
>    .ptr___pthread_get_cleanup_stack = __pthread_get_cleanup_stack,
> diff --git a/htl/pt-internal.h b/htl/pt-internal.h
> index b787acf8..ade71b24 100644
> --- a/htl/pt-internal.h
> +++ b/htl/pt-internal.h
> @@ -192,6 +192,7 @@ extern int __pthread_max_threads;
>  extern struct __pthread *_pthread_self (void);
>  #endif
>  
> +libc_hidden_proto (__pthread_self)
>  /* Stores the stack of cleanup handlers for the thread.  */
>  extern __thread struct __pthread_cancelation_handler *__pthread_cleanup_stack;
>  \f
> diff --git a/htl/pt-self.c b/htl/pt-self.c
> index e05ec69b..dc37d5dc 100644
> --- a/htl/pt-self.c
> +++ b/htl/pt-self.c
> @@ -17,7 +17,7 @@
>     <https://www.gnu.org/licenses/>.  */
>  
>  #include <pthread.h>
> -
> +#include <shlib-compat.h>
>  #include <pt-internal.h>
>  
>  /* Return the thread ID of the calling thread.  */
> @@ -36,4 +36,8 @@ __pthread_self (void)
>    return self->thread;
>  }
>  
> -weak_alias (__pthread_self, pthread_self);
> +libc_hidden_def (__pthread_self)
> +versioned_symbol (libc, __pthread_self, pthread_self, GLIBC_2_37);
> +#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_12, GLIBC_2_37)
> +compat_symbol (libc, __pthread_self, pthread_self, GLIBC_2_12);
> +#endif
> \ No newline at end of file
> diff --git a/sysdeps/htl/pthread-functions.h b/sysdeps/htl/pthread-functions.h
> index ccccc8e5..2f0e3df0 100644
> --- a/sysdeps/htl/pthread-functions.h
> +++ b/sysdeps/htl/pthread-functions.h
> @@ -56,7 +56,6 @@ int _pthread_mutex_init (pthread_mutex_t *,
>  int __pthread_mutex_lock (pthread_mutex_t *);
>  int __pthread_mutex_trylock (pthread_mutex_t *);
>  int __pthread_mutex_unlock (pthread_mutex_t *);
> -pthread_t __pthread_self (void);
>  int __pthread_setcancelstate (int, int *);
>  int __pthread_setcanceltype (int, int *);
>  struct __pthread_cancelation_handler **__pthread_get_cleanup_stack (void);
> @@ -112,7 +111,6 @@ struct pthread_functions
>    int (*ptr_pthread_mutex_lock) (pthread_mutex_t *);
>    int (*ptr_pthread_mutex_trylock) (pthread_mutex_t *);
>    int (*ptr_pthread_mutex_unlock) (pthread_mutex_t *);
> -  pthread_t (*ptr_pthread_self) (void);
>    int (*ptr___pthread_setcancelstate) (int, int *);
>    int (*ptr_pthread_setcanceltype) (int, int *);
>    struct __pthread_cancelation_handler **(*ptr___pthread_get_cleanup_stack) (void);
> diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist
> index 4e3200ef..29b08e73 100644
> --- a/sysdeps/mach/hurd/i386/libc.abilist
> +++ b/sysdeps/mach/hurd/i386/libc.abilist
> @@ -28,6 +28,7 @@ GLIBC_2.11 mkostemps F
>  GLIBC_2.11 mkostemps64 F
>  GLIBC_2.11 mkstemps F
>  GLIBC_2.11 mkstemps64 F
> +GLIBC_2.12 pthread_self F
>  GLIBC_2.13 __fentry__ F
>  GLIBC_2.14 syncfs F
>  GLIBC_2.15 __fdelt_chk F
> @@ -2294,6 +2295,7 @@ GLIBC_2.36 arc4random_buf F
>  GLIBC_2.36 arc4random_uniform F
>  GLIBC_2.36 c8rtomb F
>  GLIBC_2.36 mbrtoc8 F
> +GLIBC_2.37 pthread_self F
>  GLIBC_2.4 __confstr_chk F
>  GLIBC_2.4 __fgets_chk F
>  GLIBC_2.4 __fgets_unlocked_chk F
> diff --git a/sysdeps/mach/hurd/i386/libpthread.abilist b/sysdeps/mach/hurd/i386/libpthread.abilist
> index b9c9b75c..2ef0f670 100644
> --- a/sysdeps/mach/hurd/i386/libpthread.abilist
> +++ b/sysdeps/mach/hurd/i386/libpthread.abilist
> @@ -4,7 +4,6 @@ GLIBC_2.12 __pthread_get_cleanup_stack F
>  GLIBC_2.12 __pthread_key_create F
>  GLIBC_2.12 __pthread_kill F
>  GLIBC_2.12 __pthread_mutex_transfer_np F
> -GLIBC_2.12 __pthread_self F
>  GLIBC_2.12 __pthread_spin_destroy F
>  GLIBC_2.12 __pthread_spin_init F
>  GLIBC_2.12 __pthread_spin_lock F
> @@ -109,7 +108,6 @@ GLIBC_2.12 pthread_rwlockattr_destroy F
>  GLIBC_2.12 pthread_rwlockattr_getpshared F
>  GLIBC_2.12 pthread_rwlockattr_init F
>  GLIBC_2.12 pthread_rwlockattr_setpshared F
> -GLIBC_2.12 pthread_self F
>  GLIBC_2.12 pthread_setcancelstate F
>  GLIBC_2.12 pthread_setcanceltype F
>  GLIBC_2.12 pthread_setconcurrency F
> -- 
> 2.38.1
> 

-- 
Samuel
---
Pour une évaluation indépendante, transparente et rigoureuse !
Je soutiens la Commission d'Évaluation de l'Inria.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 0/3] htl: move __pthtread_total, ___pthread_self, pthread_self
  2023-01-03 10:45 [PATCH 0/3] htl: move __pthtread_total, ___pthread_self, pthread_self Guy-Fleury Iteriteka
                   ` (3 preceding siblings ...)
  2023-01-03 17:22 ` [PATCH 0/3] htl: move __pthtread_total, ___pthread_self, pthread_self Zack Weinberg
@ 2023-01-03 21:50 ` Samuel Thibault
  2023-01-04  8:49 ` gfleury
  5 siblings, 0 replies; 12+ messages in thread
From: Samuel Thibault @ 2023-01-03 21:50 UTC (permalink / raw)
  To: Guy-Fleury Iteriteka; +Cc: libc-alpha, bug-hurd

Hello,

Apart from the symbols visibility, that looks good to me, thanks!

We're however in glibc slushy ABI freeze period, I guess we should
refrain from including this patch for 2.37?

The release is expected on february 1st, in the meanwhile you can work
on moving the other symbols. Ideally we'll have moved all the symbols by
2.38 :)

Samuel

Guy-Fleury Iteriteka via Libc-alpha, le mar. 03 janv. 2023 12:45:12 +0200, a ecrit:
> With this patch i boot up a hurd system with flavio scripts.
> 
> Guy-Fleury Iteriteka (3):
>   htl: move __pthtread_total into libc
>   htl: move __pthread_self into libc.
>   htl: move pthread_self into libc
> 
>  htl/Makefile                              |  3 +--
>  htl/Versions                              | 15 ++++++++++++---
>  htl/forward.c                             |  4 ----
>  htl/pt-create.c                           |  6 ------
>  htl/pt-initialize.c                       |  1 -
>  htl/pt-internal.h                         |  2 ++
>  htl/pt-nthreads.c                         | 23 +++++++++++++++++++++++
>  htl/pt-self.c                             |  8 ++++++--
>  sysdeps/htl/pthread-functions.h           |  2 --
>  sysdeps/mach/hurd/htl/pt-pthread_self.c   | 22 ++++++++++++++++++++++
>  sysdeps/mach/hurd/htl/pt-sysdep.c         |  2 --
>  sysdeps/mach/hurd/htl/pt-sysdep.h         |  3 +++
>  sysdeps/mach/hurd/i386/libc.abilist       |  2 ++
>  sysdeps/mach/hurd/i386/libpthread.abilist |  2 --
>  14 files changed, 71 insertions(+), 24 deletions(-)
>  create mode 100644 htl/pt-nthreads.c
>  create mode 100644 sysdeps/mach/hurd/htl/pt-pthread_self.c
> 
> -- 
> 2.38.1

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 3/3] htl: move pthread_self into libc
  2023-01-03 21:50   ` Samuel Thibault
@ 2023-01-03 23:02     ` Samuel Thibault
  0 siblings, 0 replies; 12+ messages in thread
From: Samuel Thibault @ 2023-01-03 23:02 UTC (permalink / raw)
  To: Guy-Fleury Iteriteka, libc-alpha, bug-hurd

Samuel Thibault, le mar. 03 janv. 2023 22:50:01 +0100, a ecrit:
> make -C $src_dir/htl objdir=$PWD subdir=htl ..=../ $PWD/elf/check-abi-libpthread.out

Actually

make -C $src_dir/htl objdir=$PWD subdir=htl ..=../ $PWD/htl/check-abi-libpthread.out

Samuel

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 0/3] htl: move __pthtread_total, ___pthread_self, pthread_self
  2023-01-03 10:45 [PATCH 0/3] htl: move __pthtread_total, ___pthread_self, pthread_self Guy-Fleury Iteriteka
                   ` (4 preceding siblings ...)
  2023-01-03 21:50 ` Samuel Thibault
@ 2023-01-04  8:49 ` gfleury
  5 siblings, 0 replies; 12+ messages in thread
From: gfleury @ 2023-01-04  8:49 UTC (permalink / raw)
  To: Samuel Thibault; +Cc: libc-alpha, bug-hurd

3 janvier 2023 à 23:50 "Samuel Thibault" <samuel.thibault@gnu.org> a écrit:

hello,

> 
> Hello,
> 
> Apart from the symbols visibility, that looks good to me, thanks!
> 
> We're however in glibc slushy ABI freeze period, I guess we should
> refrain from including this patch for 2.37?
>
No problem, i send a second version for review. 

> The release is expected on february 1st, in the meanwhile you can work
> on moving the other symbols. Ideally we'll have moved all the symbols by
> 2.38 :)
>
I will try to move what i can  
> Samuel
> 
> Guy-Fleury Iteriteka via Libc-alpha, le mar. 03 janv. 2023 12:45:12 +0200, a ecrit:
> 
> > 
> > With this patch i boot up a hurd system with flavio scripts.
> >  
> >  Guy-Fleury Iteriteka (3):
> >  htl: move __pthtread_total into libc
> >  htl: move __pthread_self into libc.
> >  htl: move pthread_self into libc
> >  
> >  htl/Makefile | 3 +--
> >  htl/Versions | 15 ++++++++++++---
> >  htl/forward.c | 4 ----
> >  htl/pt-create.c | 6 ------
> >  htl/pt-initialize.c | 1 -
> >  htl/pt-internal.h | 2 ++
> >  htl/pt-nthreads.c | 23 +++++++++++++++++++++++
> >  htl/pt-self.c | 8 ++++++--
> >  sysdeps/htl/pthread-functions.h | 2 --
> >  sysdeps/mach/hurd/htl/pt-pthread_self.c | 22 ++++++++++++++++++++++
> >  sysdeps/mach/hurd/htl/pt-sysdep.c | 2 --
> >  sysdeps/mach/hurd/htl/pt-sysdep.h | 3 +++
> >  sysdeps/mach/hurd/i386/libc.abilist | 2 ++
> >  sysdeps/mach/hurd/i386/libpthread.abilist | 2 --
> >  14 files changed, 71 insertions(+), 24 deletions(-)
> >  create mode 100644 htl/pt-nthreads.c
> >  create mode 100644 sysdeps/mach/hurd/htl/pt-pthread_self.c
> >  
> >  -- 
> >  2.38.1
> >
>

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 0/3] htl: move __pthtread_total, ___pthread_self, pthread_self
  2023-01-03 18:28   ` Samuel Thibault
@ 2023-01-09 21:59     ` Zack Weinberg
  0 siblings, 0 replies; 12+ messages in thread
From: Zack Weinberg @ 2023-01-09 21:59 UTC (permalink / raw)
  To: Samuel Thibault; +Cc: Guy-Fleury Iteriteka, GNU libc development, bug-hurd

On Tue, Jan 3, 2023, at 1:28 PM, Samuel Thibault wrote:
> Zack Weinberg via Libc-alpha, le mar. 03 janv. 2023 12:22:20 -0500, a ecrit:
>> > With this patch i boot up a hurd system with flavio scripts.
>> 
>> Can we get a link to these scripts, please?  So we know why they care
>> about these symbols being in libc.
>
> He just means that he was able to check the change with a Hurd system
> built by flavio scripts. Those scripts work fine without the change, the
> change is meant to move pthread symbols from libpthread.so to libc.so,
> like was done for NPTL.

Oh, I see.  Thanks for clarifying.

zw

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2023-01-09 21:59 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-01-03 10:45 [PATCH 0/3] htl: move __pthtread_total, ___pthread_self, pthread_self Guy-Fleury Iteriteka
2023-01-03 10:45 ` [PATCH 1/3] htl: move __pthtread_total into libc Guy-Fleury Iteriteka
2023-01-03 10:45 ` [PATCH 2/3] htl: move ___pthread_self " Guy-Fleury Iteriteka
2023-01-03 10:45 ` [PATCH 3/3] htl: move pthread_self " Guy-Fleury Iteriteka
2023-01-03 21:50   ` Samuel Thibault
2023-01-03 23:02     ` Samuel Thibault
2023-01-03 17:22 ` [PATCH 0/3] htl: move __pthtread_total, ___pthread_self, pthread_self Zack Weinberg
2023-01-03 18:28   ` Samuel Thibault
2023-01-09 21:59     ` Zack Weinberg
2023-01-03 18:30   ` Guy-Fleury Iteriteka
2023-01-03 21:50 ` Samuel Thibault
2023-01-04  8:49 ` gfleury

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).