aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2018-03-17 23:53:39 +0100
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2018-03-17 23:53:39 +0100
commitc2fb08c78ac4716266c4dd7c9b4aa3c33b033d13 (patch)
tree6adb6af6f85b49d4780518f3443e3363e77dcf10
parentdc33bef307ad6eeb1cc4e4e230b69c6058890388 (diff)
downloadglibc-c2fb08c78ac4716266c4dd7c9b4aa3c33b033d13.zip
glibc-c2fb08c78ac4716266c4dd7c9b4aa3c33b033d13.tar.gz
glibc-c2fb08c78ac4716266c4dd7c9b4aa3c33b033d13.tar.bz2
hurd: Fix link cthread/pthread symbol exposition.
* hurd/Versions (HURD_CTHREADS_0.3): Rename weak refs cthread_fork, cthread_detach, pthread_getattr_np, pthread_attr_getstack, cthread_keycreate, cthread_getspecific, cthread_setspecific to __cthread_fork, __cthread_detach, __pthread_getattr_np, __pthread_attr_getstack, __cthread_keycreate, __cthread_getspecific, __cthread_setspecific. * hurd/hurdsig.c (_hurdsig_init): Use __cthread_fork, __cthread_detach, __pthread_getattr_np, __pthread_attr_getstack, __cthread_t instead of cthread_fork, cthread_detach, pthread_getattr_np, pthread_attr_getstack. * sysdeps/mach/hurd/cthreads.c (cthread_keycreate): Rename to __cthread_keycreate. (cthread_getspecific): Rename to __cthread_getspecific. (cthread_setspecific): Rename to __cthread_setspecific. (__libc_getspecific): Use __cthread_getspecific instead of cthread_getspecific. * sysdeps/mach/hurd/libc-lock.h (__libc_key_create): Use __cthread_keycreate instead of cthread_keycreate. (__libc_setspecific): Use __cthread_setspecific instead of cthread_setspecific. * sysdeps/mach/libc-lock.h (__libc_key_create, __libc_setspecific): Likewise.
-rw-r--r--ChangeLog22
-rw-r--r--hurd/Versions6
-rw-r--r--hurd/hurdsig.c24
-rw-r--r--sysdeps/mach/hurd/cthreads.c8
-rw-r--r--sysdeps/mach/hurd/libc-lock.h4
-rw-r--r--sysdeps/mach/libc-lock.h4
6 files changed, 45 insertions, 23 deletions
diff --git a/ChangeLog b/ChangeLog
index f8823b3..2fe1850 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -78,6 +78,28 @@
(__mig_dealloc_reply_port): Likewise.
(__mig_init): Do not initialize threadvar.
* sysdeps/mach/hurd/profil.c: Fix comment.
+ * hurd/Versions (HURD_CTHREADS_0.3): Rename weak refs cthread_fork,
+ cthread_detach, pthread_getattr_np, pthread_attr_getstack,
+ cthread_keycreate, cthread_getspecific, cthread_setspecific to
+ __cthread_fork, __cthread_detach, __pthread_getattr_np,
+ __pthread_attr_getstack, __cthread_keycreate, __cthread_getspecific,
+ __cthread_setspecific.
+ * hurd/hurdsig.c (_hurdsig_init): Use __cthread_fork,
+ __cthread_detach, __pthread_getattr_np, __pthread_attr_getstack,
+ __cthread_t instead of cthread_fork, cthread_detach,
+ pthread_getattr_np, pthread_attr_getstack.
+ * sysdeps/mach/hurd/cthreads.c (cthread_keycreate): Rename to
+ __cthread_keycreate.
+ (cthread_getspecific): Rename to __cthread_getspecific.
+ (cthread_setspecific): Rename to __cthread_setspecific.
+ (__libc_getspecific): Use __cthread_getspecific instead of
+ cthread_getspecific.
+ * sysdeps/mach/hurd/libc-lock.h (__libc_key_create): Use
+ __cthread_keycreate instead of cthread_keycreate.
+ (__libc_setspecific): Use __cthread_setspecific instead of
+ cthread_setspecific.
+ * sysdeps/mach/libc-lock.h (__libc_key_create, __libc_setspecific):
+ Likewise.
2018-03-16 Samuel Thibault <samuel.thibault@ens-lyon.org>
diff --git a/hurd/Versions b/hurd/Versions
index 164aa64..602391c 100644
--- a/hurd/Versions
+++ b/hurd/Versions
@@ -139,14 +139,14 @@ libc {
HURD_CTHREADS_0.3 {
# weak refs to libthreads functions that libc calls iff libthreads in use
- cthread_fork; cthread_detach;
- pthread_getattr_np; pthread_attr_getstack;
+ __cthread_fork; __cthread_detach;
+ __pthread_getattr_np; __pthread_attr_getstack;
# variables used for detecting cthreads
_cthread_exit_routine; _cthread_init_routine;
# cthreads functions with stubs in libc
- cthread_keycreate; cthread_getspecific; cthread_setspecific;
+ __cthread_keycreate; __cthread_getspecific; __cthread_setspecific;
__libc_getspecific;
}
}
diff --git a/hurd/hurdsig.c b/hurd/hurdsig.c
index 8069de3..ea76be7 100644
--- a/hurd/hurdsig.c
+++ b/hurd/hurdsig.c
@@ -1258,8 +1258,8 @@ _hurdsig_init (const int *intarray, size_t intarraysize)
/* Start the signal thread listening on the message port. */
-#pragma weak cthread_fork
- if (!cthread_fork)
+#pragma weak __cthread_fork
+ if (!__cthread_fork)
{
err = __thread_create (__mach_task_self (), &_hurd_msgport_thread);
assert_perror (err);
@@ -1291,22 +1291,22 @@ _hurdsig_init (const int *intarray, size_t intarraysize)
we'll let the signal thread's per-thread variables be found as for
any normal cthread, and just leave the magic __hurd_sigthread_*
values all zero so they'll be ignored. */
-#pragma weak cthread_detach
-#pragma weak pthread_getattr_np
-#pragma weak pthread_attr_getstack
- cthread_t thread = cthread_fork ((cthread_fn_t) &_hurd_msgport_receive,
- 0);
- cthread_detach (thread);
-
- if (pthread_getattr_np)
+#pragma weak __cthread_detach
+#pragma weak __pthread_getattr_np
+#pragma weak __pthread_attr_getstack
+ __cthread_t thread = __cthread_fork (
+ (cthread_fn_t) &_hurd_msgport_receive, 0);
+ __cthread_detach (thread);
+
+ if (__pthread_getattr_np)
{
/* Record signal thread stack layout for fork() */
pthread_attr_t attr;
void *addr;
size_t size;
- pthread_getattr_np ((pthread_t) thread, &attr);
- pthread_attr_getstack (&attr, &addr, &size);
+ __pthread_getattr_np ((pthread_t) thread, &attr);
+ __pthread_attr_getstack (&attr, &addr, &size);
__hurd_sigthread_stack_base = (uintptr_t) addr;
__hurd_sigthread_stack_end = __hurd_sigthread_stack_base + size;
}
diff --git a/sysdeps/mach/hurd/cthreads.c b/sysdeps/mach/hurd/cthreads.c
index 640c97e..3568930 100644
--- a/sysdeps/mach/hurd/cthreads.c
+++ b/sysdeps/mach/hurd/cthreads.c
@@ -26,7 +26,7 @@ char __libc_lock_self0[0];
/* Placeholder for key creation routine from Hurd cthreads library. */
int
weak_function
-cthread_keycreate (cthread_key_t *key)
+__cthread_keycreate (cthread_key_t *key)
{
__set_errno (ENOSYS);
*key = -1;
@@ -36,7 +36,7 @@ cthread_keycreate (cthread_key_t *key)
/* Placeholder for key retrieval routine from Hurd cthreads library. */
int
weak_function
-cthread_getspecific (cthread_key_t key, void **pval)
+__cthread_getspecific (cthread_key_t key, void **pval)
{
*pval = NULL;
__set_errno (ENOSYS);
@@ -46,7 +46,7 @@ cthread_getspecific (cthread_key_t key, void **pval)
/* Placeholder for key setting routine from Hurd cthreads library. */
int
weak_function
-cthread_setspecific (cthread_key_t key, void *val)
+__cthread_setspecific (cthread_key_t key, void *val)
{
__set_errno (ENOSYS);
return -1;
@@ -58,6 +58,6 @@ void *
__libc_getspecific (cthread_key_t key)
{
void *val;
- cthread_getspecific (key, &val);
+ __cthread_getspecific (key, &val);
return val;
}
diff --git a/sysdeps/mach/hurd/libc-lock.h b/sysdeps/mach/hurd/libc-lock.h
index 2dfade9..ed45f07 100644
--- a/sysdeps/mach/hurd/libc-lock.h
+++ b/sysdeps/mach/hurd/libc-lock.h
@@ -201,8 +201,8 @@ struct __libc_once
/* Type for key of thread specific data. */
typedef cthread_key_t __libc_key_t;
-#define __libc_key_create(KEY,DEST) cthread_keycreate (KEY)
-#define __libc_setspecific(KEY,VAL) cthread_setspecific (KEY, VAL)
+#define __libc_key_create(KEY,DEST) __cthread_keycreate (KEY)
+#define __libc_setspecific(KEY,VAL) __cthread_setspecific (KEY, VAL)
void *__libc_getspecific (__libc_key_t key);
#endif /* _CTHREADS_ */
diff --git a/sysdeps/mach/libc-lock.h b/sysdeps/mach/libc-lock.h
index caeba47..89e5715 100644
--- a/sysdeps/mach/libc-lock.h
+++ b/sysdeps/mach/libc-lock.h
@@ -124,8 +124,8 @@ struct __libc_once
#define __libc_mutex_unlock __mutex_unlock
#endif
-#define __libc_key_create(KEY,DEST) cthread_keycreate (KEY)
-#define __libc_setspecific(KEY,VAL) cthread_setspecific (KEY, VAL)
+#define __libc_key_create(KEY,DEST) __cthread_keycreate (KEY)
+#define __libc_setspecific(KEY,VAL) __cthread_setspecific (KEY, VAL)
void *__libc_getspecific (__libc_key_t key);
/* XXX until cthreads supports recursive locks */