On Wed, Oct 22, 2025 at 8:33 AM Yonghong Song yonghong.song@linux.dev wrote:
On 10/22/25 12:18 AM, Jiayuan Chen wrote:
When compiling the BPF selftests with Clang versions that do not support the addr_space_cast builtin, the build fails with assembly errors in "verifier_ldsx.c" [1].
The root cause is that the inline assembly using addr_space_cast is being processed by a compiler that lacks this feature. To resolve this, wrap the affected code sections (specifically the arena_ldsx_* test functions) with #if defined(__BPF_FEATURE_ADDR_SPACE_CAST). This ensures the code is only compiled when the Clang supports the necessary feature, preventing build failures on older or incompatible compiler versions.
This change maintains test coverage for systems with support while allowing the tests to build successfully in all environments.
[1]: root:tools/testing/selftests/bpf$ make
CLNG-BPF [test_progs] verifier_ldsx.bpf.o progs/verifier_ldsx.c:322:2: error: invalid operand for instruction 322 | "r1 = %[arena] ll;" | ^ <inline asm>:1:52: note: instantiated into assembly here 1 | r1 = arena ll;r0 = 0xdeadbeef;r0 = addr_space_cast(r0,... | ^
I think you are using llvm18 and earlier. Why can you upgrade to llvm19 and later which should solve the problem?
Fixes: f61654912404 ("selftests: bpf: Add tests for signed loads from arena")
We do not need to have Fixes. compiler is also moving forward, we cannot support really old compiler and it is no point to have __BPF_FEATURE_ADDR_SPACE_CAST for really old compilers. So at some point, __BPF_FEATURE_ADDR_SPACE_CAST will become default.
+1 and this is not the first time we're seeing this type of patches. Upgrade your compiler. That's the only way.
pw-bot: cr