summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2018-06-16 10:52:04 +0200
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2018-06-16 10:52:04 +0200
commitf96a85e0fe83abdc30c73e6f01b995baf733e97b (patch)
tree20ee97cbd3a7d1f5b9af63e9e037eba19737776c
parent8c9d53428e463da0ab99ff5162d94c3a043b3a2d (diff)
downloadglibc-f96a85e0fe83abdc30c73e6f01b995baf733e97b.tar.gz
hurd: Fix missing __pthread_get_cleanup_stack symbol
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.
-rw-r--r--ChangeLog13
-rw-r--r--htl/pt-cleanup.c4
-rw-r--r--htl/pt-exit.c2
-rw-r--r--htl/pt-join.c2
-rw-r--r--sysdeps/htl/pthread-functions.h3
-rw-r--r--sysdeps/htl/pthreadP.h1
6 files changed, 10 insertions, 15 deletions
diff --git a/ChangeLog b/ChangeLog
index 2fc3a71c21..363ae5bd77 100644
--- 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
diff --git a/htl/pt-cleanup.c b/htl/pt-cleanup.c
index b4a9834dc1..1b860c7bf7 100644
--- a/htl/pt-cleanup.c
+++ b/htl/pt-cleanup.c
@@ -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)
diff --git a/htl/pt-exit.c b/htl/pt-exit.c
index 823e09e26e..cb62f474fa 100644
--- a/htl/pt-exit.c
+++ b/htl/pt-exit.c
@@ -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);
diff --git a/htl/pt-join.c b/htl/pt-join.c
index 061f421eae..befa0da5bc 100644
--- a/htl/pt-join.c
+++ b/htl/pt-join.c
@@ -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
diff --git a/sysdeps/htl/pthread-functions.h b/sysdeps/htl/pthread-functions.h
index bb901e3b7f..a0d06cc039 100644
--- a/sysdeps/htl/pthread-functions.h
+++ b/sysdeps/htl/pthread-functions.h
@@ -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 *);
diff --git a/sysdeps/htl/pthreadP.h b/sysdeps/htl/pthreadP.h
index 3fcb811f49..132ac1718e 100644
--- a/sysdeps/htl/pthreadP.h
+++ b/sysdeps/htl/pthreadP.h
@@ -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)