Software Build Failures After Upgrade To 2.40
Adhemerval Zanella Netto
adhemerval.zanella@linaro.org
Mon Aug 12 20:36:43 GMT 2024
On 10/08/24 10:37, LAP wrote:
> After upgrading from 2.39 to 2.40, I am getting compile failures
> for several software packages. For example, with openssl-3.3.1
> the build fails with the following error:
>
> undefined reference to `__pthread_cond_timedwait64'
>
> Other packages that fail are wxGTK and LibreOffice with the same
> or similar errors involving the "__pthread_cond_*64" symbol.
>
> Examining the "pthread.h" header file from 2.39 I find this:
>
> ------------------------------------------------------------------------
> # ifndef __USE_TIME_BITS64
> extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
> pthread_mutex_t *__restrict __mutex,
> const struct timespec *__restrict __abstime)
> [...]
> # else
> # define pthread_cond_timedwait __pthread_cond_timedwait64
> ---------------------------------------------------------------------------
>
> Whereas the "pthread.h" header file from 2.40 has this:
>
> ---------------------------------------------------------------------------
> # ifndef __USE_TIME64_REDIRECTS
> extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
> pthread_mutex_t *__restrict __mutex,
> const struct timespec *__restrict __abstime)
> [...]
> # else
> # define pthread_cond_timedwait __pthread_cond_timedwait64
> ----------------------------------------------------------------------------
>
>
> Could it be that the change of variable from "__USE_TIME_BITS64" to "__USE_TIME64_REDIRECTS"
> is causing the symbols to be undefined when building software with 2.40?
>
> If so, would it be the package maintainers responsibility to correct this problem?
>
It have seems similar issues with a broken bootstrap compiler, where the
gcc include-fixed/pthread.h does not match the ssyroot glibc thread.h one
because it was generated from the system header instead of glibc one.
I don't fully recall why gcc need to post-process the glibc headers, the
only difference seems to be __sigsetjmp signature; but it seems that to
update from 2.39 to 2.40 one will need to regenerate it as well.
More information about the Libc-help
mailing list