[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#674412: tcc: undefined symbol '__builtin_expect' on pthread_cleanup_push() call



tags 674412 + upstream
notforwarded 674412
quit

Hi,

Thomas Preud'homme wrote:
> Le jeudi 24 mai 2012 14:47:39, vous avez écrit :

>> $ tcc -Wall -Wextra thread.c -pthread
>> thread.c:10: warning: implicit declaration of function '__builtin_expect'
>> tcc: error: undefined symbol '__builtin_expect'
[...]
> In pthread.h, pthread_cleanup_push is defined around line 650 in the following 
> way when __GNUC__ is not defined (the case for tcc for example):
>
> # define pthread_cleanup_push(routine, arg) \
>   do {                                                                        \
>     __pthread_unwind_buf_t __cancel_buf;                                      \
>     void (*__cancel_routine) (void *) = (routine);                            \
>     void *__cancel_arg = (arg);                                               \
>     int __not_first_call = __sigsetjmp ((struct __jmp_buf_tag *) (void *)     \
>                                         __cancel_buf.__cancel_jmp_buf, 0);    \
>     if (__builtin_expect (__not_first_call, 0))                               \
>       {                                                                       \
[...]
> This makes use of __builtin_expect which should not be assume to exist.

Good catch, thanks.  Looks like an old one.

This doesn't seem to have been fixed upstream, so please report this
to http://sourceware.org/bugzilla, product glibc, component nptl, and
let us know the bug number so we can track it.

Hope that helps,
Jonathan



Reply to: