diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2017-09-24 23:09:59 +0200 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2017-09-24 23:09:59 +0200 |
commit | f881f17267506f3ced17259a066a4d95bffb57f0 (patch) | |
tree | 8fd2dd37c928033b6cc6fff7835575899b39b1e5 /pthread | |
parent | 4c9332bfdc9ccd793b6ded3168602195913cedb3 (diff) |
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.
Diffstat (limited to 'pthread')
-rw-r--r-- | pthread/cthreads-compat.c | 25 | ||||
-rw-r--r-- | pthread/pt-getattr.c | 3 |
2 files changed, 15 insertions, 13 deletions
diff --git a/pthread/cthreads-compat.c b/pthread/cthreads-compat.c index 1a0971b..cd845ed 100644 --- a/pthread/cthreads-compat.c +++ b/pthread/cthreads-compat.c @@ -20,23 +20,20 @@ #include <assert.h> #include <pthread.h> -typedef void *cthread_t; -typedef void *(*cthread_fn_t) (void *arg); -typedef int cthread_key_t; - -#define CTHREAD_KEY_INVALID (cthread_key_t) -1 +#define CTHREAD_KEY_INVALID (__cthread_key_t) -1 void -cthread_detach (cthread_t thread) +__cthread_detach (__cthread_t thread) { int err; err = pthread_detach ((pthread_t) thread); assert_perror (err); } +weak_alias (__cthread_detach, cthread_detach) -cthread_t -cthread_fork (cthread_fn_t func, void *arg) +__cthread_t +__cthread_fork (__cthread_fn_t func, void *arg) { pthread_t thread; int err; @@ -44,11 +41,12 @@ cthread_fork (cthread_fn_t func, void *arg) err = pthread_create (&thread, NULL, func, arg); assert_perror (err); - return (cthread_t) thread; + return (__cthread_t) thread; } +weak_alias (__cthread_fork, cthread_fork) int -cthread_keycreate (cthread_key_t *key) +__cthread_keycreate (__cthread_key_t *key) { error_t err; @@ -62,16 +60,18 @@ cthread_keycreate (cthread_key_t *key) return err; } +weak_alias (__cthread_keycreate, cthread_keycreate) int -cthread_getspecific (cthread_key_t key, void **val) +__cthread_getspecific (__cthread_key_t key, void **val) { *val = pthread_getspecific (key); return 0; } +weak_alias (__cthread_getspecific, cthread_getspecific) int -cthread_setspecific (cthread_key_t key, void *val) +__cthread_setspecific (__cthread_key_t key, void *val) { error_t err; @@ -84,6 +84,7 @@ cthread_setspecific (cthread_key_t key, void *val) return err; } +weak_alias (__cthread_setspecific, cthread_setspecific) void __mutex_lock_solid (void *lock) diff --git a/pthread/pt-getattr.c b/pthread/pt-getattr.c index 574420a..0b86c66 100644 --- a/pthread/pt-getattr.c +++ b/pthread/pt-getattr.c @@ -27,7 +27,7 @@ already running thread THREAD. It shall be called on an uninitialized ATTR and destroyed with pthread_attr_destroy when no longer needed. */ int -pthread_getattr_np (pthread_t thread, pthread_attr_t *attr) +__pthread_getattr_np (pthread_t thread, pthread_attr_t *attr) { struct __pthread *pthread; @@ -49,3 +49,4 @@ pthread_getattr_np (pthread_t thread, pthread_attr_t *attr) return 0; } +weak_alias (__pthread_getattr_np, pthread_getattr_np) |