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.
This commit is contained in:
Rich Felker
2011-03-25 22:13:57 -04:00
parent 92b52b70e8
commit ea343364a7
8 changed files with 57 additions and 0 deletions

View File

@ -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();