From f881f17267506f3ced17259a066a4d95bffb57f0 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Sun, 24 Sep 2017 23:09:59 +0200 Subject: Fix symbols exposed in linkspace Libc uses some thread functions, but should not expose the corresponding symbols, so use aliases. * Versions (__cthread_detach, __cthread_fork, __cthread_keycreate, __cthread_getspecific, __cthread_setspecific, __pthread_getattr_np, __pthread_attr_getstack): Add symbols * pthread/cthreads-compat.c (cthread_t, cthread_fn_t, cthread_key_t): Do not define. (cthread_detach): Rename to __cthread_detach. (cthread_detach): Define as weak alias to __cthread_detach. (cthread_fork, cthread_keycreate, cthread_getspecific, cthread_setspecific): Likewise. * pthread/pt-getattr.c (pthread_getattr_np): Likewise. * sysdeps/generic/pt-attr-getstack.c (pthread_attr_getstack): Likewise. * sysdeps/pthread/pthread.h (__cthread_t, __cthread_key_t, __cthread_fn_t, __cthread_fork, __cthread_detach, __cthread_keycreate, __cthread_getspecific, __cthread_setspecific, __pthread_getattr_np, __pthread_attr_getstack): Declare. --- sysdeps/generic/pt-attr-getstack.c | 3 ++- sysdeps/pthread/pthread.h | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) (limited to 'sysdeps') diff --git a/sysdeps/generic/pt-attr-getstack.c b/sysdeps/generic/pt-attr-getstack.c index 7beb79f..5ab821e 100644 --- a/sysdeps/generic/pt-attr-getstack.c +++ b/sysdeps/generic/pt-attr-getstack.c @@ -21,7 +21,7 @@ #include int -pthread_attr_getstack (const pthread_attr_t *attr, +__pthread_attr_getstack (const pthread_attr_t *attr, void **stackaddr, size_t *stacksize) { @@ -29,3 +29,4 @@ pthread_attr_getstack (const pthread_attr_t *attr, pthread_attr_getstacksize (attr, stacksize); return 0; } +weak_alias (__pthread_attr_getstack, pthread_attr_getstack) diff --git a/sysdeps/pthread/pthread.h b/sysdeps/pthread/pthread.h index 1d4d3c7..8e65b05 100644 --- a/sysdeps/pthread/pthread.h +++ b/sysdeps/pthread/pthread.h @@ -1,7 +1,22 @@ #ifndef _PTHREAD_H #include +/* These represent the interface used by glibc itself. */ + extern int __pthread_mutex_lock (pthread_mutex_t *__mutex); extern int __pthread_mutex_unlock (pthread_mutex_t *__mutex); +typedef struct __cthread *__cthread_t; +typedef int __cthread_key_t; +typedef void * (*__cthread_fn_t)(void *__arg); + +__cthread_t __cthread_fork (__cthread_fn_t, void *); +void __cthread_detach (__cthread_t); +int __cthread_keycreate (__cthread_key_t *); +int __cthread_getspecific (__cthread_key_t, void **); +int __cthread_setspecific (__cthread_key_t, void *); + +int __pthread_getattr_np (pthread_t, pthread_attr_t *); +int __pthread_attr_getstack (const pthread_attr_t *, void **, size_t *); + #endif -- cgit v1.2.3