diff options
author | Rich Felker <dalias@aerifal.cx> | 2011-08-03 19:45:21 -0400 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2011-08-03 19:45:21 -0400 |
commit | 730bee725a770b543181424b52203dd1634ab5d1 (patch) | |
tree | ef0eac3484242a94ce6854423c6b1cb3ecfcc76a /src/thread/cancellation.c | |
parent | fc0ecd35d8e0041c81bbe08c10c7fcb946da85e0 (diff) | |
download | musl-730bee725a770b543181424b52203dd1634ab5d1.tar.gz musl-730bee725a770b543181424b52203dd1634ab5d1.tar.bz2 musl-730bee725a770b543181424b52203dd1634ab5d1.tar.xz musl-730bee725a770b543181424b52203dd1634ab5d1.zip |
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.
Diffstat (limited to 'src/thread/cancellation.c')
-rw-r--r-- | src/thread/cancellation.c | 12 |
1 files changed, 12 insertions, 0 deletions
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(); |