summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--nptl/ChangeLog9
-rw-r--r--nptl/Versions1
-rw-r--r--nptl/pthreadP.h4
-rw-r--r--nptl/sysdeps/pthread/librt-cancellation.c15
-rw-r--r--nptl/unwind.c1
5 files changed, 15 insertions, 15 deletions
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index 82034f8d5d..0b016b095f 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,3 +1,12 @@
+2003-07-03 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/pthread/librt-cancellation.c (__pthread_unwind): Remove
+ definition.
+ * pthreadP.h (__pthread_unwind): Add hidden_proto if used in
+ libpthread compilation.
+ * unwind.c (__pthread_unwind): Add hidden_def.
+ * Versions (libpthread) [GLIBC_PRIVATE]: Add __pthread_unwind.
+
2003-07-01 Ulrich Drepper <drepper@redhat.com>
* libc-cancellation.c (__libc_cleanup_routine): Define.
diff --git a/nptl/Versions b/nptl/Versions
index a8fa3c85e8..0f98663d72 100644
--- a/nptl/Versions
+++ b/nptl/Versions
@@ -225,5 +225,6 @@ libpthread {
GLIBC_PRIVATE {
__pthread_initialize_minimal; __pthread_cleanup_upto;
__pthread_clock_gettime; __pthread_clock_settime;
+ __pthread_unwind;
}
}
diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h
index 1c523a873d..e33d828117 100644
--- a/nptl/pthreadP.h
+++ b/nptl/pthreadP.h
@@ -114,6 +114,10 @@ extern void __pthread_unwind (__pthread_unwind_buf_t *__buf)
weak_function
#endif
;
+#if defined NOT_IN_libc && defined IS_IN_libpthread
+hidden_proto (__pthread_unwind)
+#endif
+
/* Called when a thread reacts on a cancellation request. */
static inline void
diff --git a/nptl/sysdeps/pthread/librt-cancellation.c b/nptl/sysdeps/pthread/librt-cancellation.c
index b5a118f912..ae9dd2ad97 100644
--- a/nptl/sysdeps/pthread/librt-cancellation.c
+++ b/nptl/sysdeps/pthread/librt-cancellation.c
@@ -25,21 +25,6 @@
#ifdef IS_IN_librt
-
-/* XXX Hack ahead. In librt we currently do not have access to a
- function equivalent to __pthread_unwind. Therefore we just raise a
- signal. */
-void
-attribute_hidden
-__pthread_unwind (__pthread_unwind_buf_t *buf)
-{
- INTERNAL_SYSCALL_DECL (err);
- while (1)
- INTERNAL_SYSCALL (tkill, err, 2, THREAD_GETMEM (THREAD_SELF, tid),
- SIGCANCEL);
-}
-
-
/* The next two functions are similar to pthread_setcanceltype() but
more specialized for the use in the cancelable functions like write().
They do not need to check parameters etc. */
diff --git a/nptl/unwind.c b/nptl/unwind.c
index a7855c386c..e51fd295b5 100644
--- a/nptl/unwind.c
+++ b/nptl/unwind.c
@@ -111,6 +111,7 @@ __pthread_unwind (__pthread_unwind_buf_t *buf)
/* We better do not get here. */
abort ();
}
+hidden_def (__pthread_unwind)
void