From 730bee725a770b543181424b52203dd1634ab5d1 Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Wed, 3 Aug 2011 19:45:21 -0400 Subject: fix static linking dependency bloat with cancellation previously, pthread_cleanup_push/pop were pulling in all of pthread_create due to dependency on the __pthread_unwind_next function. this was not needed, as cancellation cleanup handlers can never be called unless pthread_exit or pthread_cancel is reachable. --- src/thread/cancellation.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src/thread/cancellation.c') diff --git a/src/thread/cancellation.c b/src/thread/cancellation.c index 4976fedc..6dfee539 100644 --- a/src/thread/cancellation.c +++ b/src/thread/cancellation.c @@ -3,10 +3,22 @@ #ifdef __pthread_register_cancel #undef __pthread_register_cancel #undef __pthread_unregister_cancel +#undef __pthread_unwind_next #define __pthread_register_cancel __pthread_register_cancel_3 #define __pthread_unregister_cancel __pthread_unregister_cancel_3 +#define __pthread_unwind_next __pthread_unwind_next_3 #endif +static void dummy(struct __ptcb *cb) +{ +} +weak_alias(dummy, __pthread_do_unwind); + +void __pthread_unwind_next(struct __ptcb *cb) +{ + __pthread_do_unwind(cb); +} + void __pthread_register_cancel(struct __ptcb *cb) { struct pthread *self = pthread_self(); -- cgit v1.2.1