]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
hurd: Fix missing __pthread_get_cleanup_stack symbol
authorSamuel Thibault <samuel.thibault@ens-lyon.org>
Sat, 16 Jun 2018 08:52:04 +0000 (10:52 +0200)
committerSamuel Thibault <samuel.thibault@ens-lyon.org>
Sat, 16 Jun 2018 08:52:04 +0000 (10:52 +0200)
Rework 57e1651557e8 ("hurd: Avoid PLT ref for __pthread_get_cleanup_stack")
to keep the __pthread_get_cleanup_stack symbol.

        * htl/pt-cleanup.c (__pthread_get_cleanup_stack): Rename to
        ___pthread_get_cleanup_stack.
        (__pthread_get_cleanup_stack): Remove hidden def, add alias.
        * htl/pt-exit.c (__pthread_exit): Use ___pthread_get_cleanup_stack
        instead of __pthread_get_cleanup_stack.
        * sysdeps/htl/pthread-functions.h [libpthread]
        (__pthread_get_cleanup_stack): Remove hidden proto.
        * sysdeps/htl/pthreadP.h (___pthread_get_cleanup_stack): Add
        prototype.
* sysdeps/htl/pthreadP.h (___pthread_get_cleanup_stack): Add hidden
attribute.
* htl/pt-join.c (__pthread_get_cleanup_stack): Define to
___pthread_get_cleanup_stack.

ChangeLog
htl/pt-cleanup.c
htl/pt-exit.c
htl/pt-join.c
sysdeps/htl/pthread-functions.h
sysdeps/htl/pthreadP.h

index 2fc3a71c21652c5b9173d3fd950fe6dff310458e..363ae5bd77f5916a265f1cc8f69b5112eeca6d0c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -8,15 +8,10 @@
        * sysdeps/mach/hurd/lseek.c: Include <errno.h>.
        * sysdeps/mach/hurd/lseek.c (__libc_lseek): Check that the value
        returned by __lseek64 can fit off_t, return EOVERFLOW otherwise.
-       * htl/pt-cleanup.c (___pthread_get_cleanup_stack): Rename to
-       __pthread_get_cleanup_stack.
-       (__pthread_get_cleanup_stack): Remove alias, add hidden def.
-       * htl/pt-exit.c (__pthread_exit): Use __pthread_get_cleanup_stack
-       instead of ___pthread_get_cleanup_stack.
-       * sysdeps/htl/pthread-functions.h [libpthread]
-       (__pthread_get_cleanup_stack): Add hidden proto.
-       * sysdeps/htl/pthreadP.h (___pthread_get_cleanup_stack): Remove
-       prototype.
+       * sysdeps/htl/pthreadP.h (___pthread_get_cleanup_stack): Add hidden
+       attribute.
+       * htl/pt-join.c (__pthread_get_cleanup_stack): Define to
+       ___pthread_get_cleanup_stack.
        * sysdeps/mach/hurd/localplt.data (ld.so): Make ref to __open optional.
        * sysdeps/mach/include/mach-shortcuts-hidden.h: New file.
        * mach/shortcut.awk: Make syscall stubs include
index b4a9834dc1c1b98b8c45682ae231f1e7789170dd..1b860c7bf7cf778b6e653abb127331c8c50b35bd 100644 (file)
@@ -21,8 +21,8 @@
 #include <pt-internal.h>
 
 struct __pthread_cancelation_handler **
-__pthread_get_cleanup_stack (void)
+___pthread_get_cleanup_stack (void)
 {
   return &_pthread_self ()->cancelation_handlers;
 }
-libc_hidden_def (__pthread_get_cleanup_stack)
+strong_alias (___pthread_get_cleanup_stack, __pthread_get_cleanup_stack)
index 823e09e26e08e023c33ac3d40cba1cf5059bd5d4..cb62f474fa82924c1811f18398ab85900c4b959f 100644 (file)
@@ -41,7 +41,7 @@ __pthread_exit (void *status)
      disabled.  */
   __pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &oldstate);
 
-  for (handlers = __pthread_get_cleanup_stack ();
+  for (handlers = ___pthread_get_cleanup_stack ();
        *handlers != NULL;
        *handlers = (*handlers)->__next)
     (*handlers)->__handler ((*handlers)->__arg);
index 061f421eae68f4b9ddc2602b304bc467c8ee0743..befa0da5bc90d8c01eeffa6483939cb4eb8fc29a 100644 (file)
@@ -22,6 +22,8 @@
 
 #include <pt-internal.h>
 
+#define __pthread_get_cleanup_stack ___pthread_get_cleanup_stack
+
 /* Make calling thread wait for termination of thread THREAD.  Return
    the exit status of the thread in *STATUS.  */
 int
index bb901e3b7f0300ed0268584e325c5a1f0dec67e0..a0d06cc03998558cb834f35fa3a5731e83e85b7e 100644 (file)
@@ -60,9 +60,6 @@ pthread_t __pthread_self (void);
 int __pthread_setcancelstate (int, int *);
 int __pthread_setcanceltype (int, int *);
 struct __pthread_cancelation_handler **__pthread_get_cleanup_stack (void);
-#if IS_IN (libpthread)
-hidden_proto (__pthread_get_cleanup_stack)
-#endif
 int __pthread_once (pthread_once_t *, void (*) (void));
 int __pthread_rwlock_rdlock (pthread_rwlock_t *);
 int __pthread_rwlock_wrlock (pthread_rwlock_t *);
index 3fcb811f497c026c45fd4244035cc5566a30bbbb..132ac1718eafc059b3857da91764d03905590f1a 100644 (file)
@@ -64,6 +64,7 @@ int __pthread_attr_setstacksize (pthread_attr_t *__attr, size_t __stacksize);
 int __pthread_attr_setstack (pthread_attr_t *__attr, void *__stackaddr,
                             size_t __stacksize);
 int __pthread_attr_getstack (const pthread_attr_t *, void **, size_t *);
+struct __pthread_cancelation_handler **___pthread_get_cleanup_stack (void) attribute_hidden;
 
 #if IS_IN (libpthread)
 hidden_proto (__pthread_key_create)