From ea343364a719add2cd8adf8a50c15bb5f9400dd8 Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Fri, 25 Mar 2011 22:13:57 -0400 Subject: match glibc/lsb cancellation abi on i386 glibc made the ridiculous choice to use pass-by-register calling convention for these functions, which is impossible to duplicate directly on non-gcc compilers. instead, we use ugly asm to wrap and convert the calling convention. presumably this works with every compiler anyone could potentially want to use. --- src/thread/cancellation.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/thread/cancellation.c') diff --git a/src/thread/cancellation.c b/src/thread/cancellation.c index ac1af30a..4976fedc 100644 --- a/src/thread/cancellation.c +++ b/src/thread/cancellation.c @@ -1,5 +1,12 @@ #include "pthread_impl.h" +#ifdef __pthread_register_cancel +#undef __pthread_register_cancel +#undef __pthread_unregister_cancel +#define __pthread_register_cancel __pthread_register_cancel_3 +#define __pthread_unregister_cancel __pthread_unregister_cancel_3 +#endif + void __pthread_register_cancel(struct __ptcb *cb) { struct pthread *self = pthread_self(); -- cgit 1.4.1