You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
does not compile with Clang on OpenMandriva Cooker: undefined symbol: __readlinkat_alias #260
I'm trying to compile umockdev 0.19.0 using Clang 19.1.6 on OpenMandriva Cooker and I'm getting the compilation error below.
It's worth noting that previous versions of umockdev 0.18.x compile correctly with Clang.
Version 0.19.0 also compiles correctly with GCC.
Hello @AngryPenguinPL ! To bisect, the last commit that touched the preload lib was commit 284dcf1 , but that is already in 0.18.4 and really didn't change anything that would touch include files or readlinkat(). The previous one was commit 8cb6255 which was a bit more intrusive, but also not related to readlink, and already in 0.18.3 (from May).
So I take it that 0.18.3 or .4 also fail to build in your environment now, and it's due to some change in the build env, not a code change? (Note that there of course could still be a bug, but it's not a recent regression then)
Thanks for confirming! It's not really a matter of "blaming", it's probably a combination of clang and glibc changes that the preload doesn't get along with -- I haven't yet encountered __readlinkat_alias().
I tested a build on Fedora 41 x86_64 with clang-19.1.5-1.fc41.x86_64 and glibc-2.40-12.fc41.x86_64 and that works. So I can't easily reproduce/investigate this.
Debian has clang 19.1.6 (Fedora 41 only has 19.1.5). But CC=clang meson setup c && meson test -C c also works. This is also glibc 2.40, similar to F41.
What glibc version are you using? Do you have a reproducer in a container?
changed the title [-]0.19.0 - not compile with Clang: undefined symbol: __readlinkat_alias[/-][+]does not compile with Clang on OpenMandriva Cooker: undefined symbol: __readlinkat_alias[/+]on Jan 5, 2025
Hello. Bumped into this issue on a Gentoo system using the LLVM toolchain. It seems passing -O* to clang causes the failure. Clang compiles umockdev as long as -O isn't passed.
Activity
martinpitt commentedon Dec 28, 2024
Hello @AngryPenguinPL ! To bisect, the last commit that touched the preload lib was commit 284dcf1 , but that is already in 0.18.4 and really didn't change anything that would touch include files or readlinkat(). The previous one was commit 8cb6255 which was a bit more intrusive, but also not related to readlink, and already in 0.18.3 (from May).
So I take it that 0.18.3 or .4 also fail to build in your environment now, and it's due to some change in the build env, not a code change? (Note that there of course could still be a bug, but it's not a recent regression then)
AngryPenguinPL commentedon Dec 29, 2024
I re-checked the older version and it does indeed not compile. You are right.
The question remains, what is to blame? Clang 19.1.6?
martinpitt commentedon Dec 30, 2024
Thanks for confirming! It's not really a matter of "blaming", it's probably a combination of clang and glibc changes that the preload doesn't get along with -- I haven't yet encountered
__readlinkat_alias().I tested a build on Fedora 41 x86_64 with clang-19.1.5-1.fc41.x86_64 and glibc-2.40-12.fc41.x86_64 and that works. So I can't easily reproduce/investigate this.
martinpitt commentedon Jan 5, 2025
Debian has clang 19.1.6 (Fedora 41 only has 19.1.5). But
CC=clang meson setup c && meson test -C calso works. This is also glibc 2.40, similar to F41.What glibc version are you using? Do you have a reproducer in a container?
[-]0.19.0 - not compile with Clang: undefined symbol: __readlinkat_alias[/-][+]does not compile with Clang on OpenMandriva Cooker: undefined symbol: __readlinkat_alias[/+]RossComputerGuy commentedon Jan 19, 2025
This is reproducible with Nixpkgs / NixOS via running
nix build github:NixOS/nixpkgs#pkgsLLVM.umockdev. We've got glibc-2.40.PIPIPIG233666 commentedon May 24, 2026
Still having the undefined symbol on llvm 22
/var/tmp/portage/dev-util/umockdev-0.19.7-r1/temp/build.logEdit: GCC-16 works
unhappy-ending commentedon Jul 14, 2026
Hello. Bumped into this issue on a Gentoo system using the LLVM toolchain. It seems passing -O* to clang causes the failure. Clang compiles umockdev as long as -O isn't passed.
dev-util/umockdev: add 0.19.9