about summary refs log tree commit diff
path: root/src/thread/pthread_cancel.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/thread/pthread_cancel.c')
-rw-r--r--src/thread/pthread_cancel.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/thread/pthread_cancel.c b/src/thread/pthread_cancel.c
index 4493931e..66e0817c 100644
--- a/src/thread/pthread_cancel.c
+++ b/src/thread/pthread_cancel.c
@@ -1,11 +1,18 @@
 #include "pthread_impl.h"
 #include "syscall.h"
+#include "libc.h"
 
 void __cancel()
 {
 	pthread_exit(PTHREAD_CANCELED);
 }
 
+/* If __syscall_cp_asm has adjusted the stack pointer, it must provide a
+ * definition of __cp_cancel to undo those adjustments and call __cancel.
+ * Otherwise, __cancel provides a definition for __cp_cancel. */
+
+weak_alias(__cancel, __cp_cancel);
+
 long __syscall_cp_asm(volatile void *, syscall_arg_t,
                       syscall_arg_t, syscall_arg_t, syscall_arg_t,
                       syscall_arg_t, syscall_arg_t, syscall_arg_t);