mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-07-14 14:10:33 +03:00
![]() Fixes /nix/store/8pq96x5qsczrmc926795lf7j4dzy2c8q-binutils-patchelfed-ld-2.43.1/bin/ld: ../../src/liblzma/.libs/liblzma.so: undefined reference to `__pthread_cond_timedwait64' collect2: error: ld returned 1 exit status while building `xz` for `stdenv`. The root cause is that glibc replaced `__USE_TIME_BITS64` with `__USE_TIME64_REDIRECTS`[1]. However, the stage3 GCC seems to use the bootstrap headers from glibc for `fixincludes`, i.e. headers w/o this change. Because of that, the xz build with stage3 stdenv gets a header that looks like this: # ifndef __USE_TIME_BITS64 /* ... */ # else # ifdef __REDIRECT /* ... */ # else # define pthread_cond_timedwait __pthread_cond_timedwait64 # endif # endif Since __USE_TIME_BITS64 doesn't exist anymore because a new glibc is used for building, the preprocessor ends up in the condition defining `__pthread_cond_timedwait64` even though it's not supposed to end up there since __pthread_cond_timedwait64 doesn't exist on x86_64[2]. I decided to just kill the header here since GCC claims that all the `pthread.h` only very old glibc versions or platform-specific libcs we don't use[3]. [1] https://sourceware.org/git/?p=glibc.git%3Ba%3Dcommit%3Bh%3Ddd535f4f19ef2b5c367a362af445ecadcf45401e [2] https://inbox.sourceware.org/libc-stable/50c0269d-b73c-4e8a-9816-65f72d6082c0@linaro.org/ [3] https://github.com/gcc-mirror/gcc/blob/releases/gcc-14.2.0/fixincludes/inclhack.def |
||
---|---|---|
.. | ||
common | ||
patches | ||
all.nix | ||
default.nix | ||
versions.nix |