" On Wed, Oct 16, 2019 at 3:59 PM Prabhakar Kushwaha prabhakar.pkin@gmail.com wrote:
On Tue, Sep 24, 2019 at 12:56:53PM -0600, Shuah Khan wrote:
On 9/24/19 12:49 PM, Daniel Borkmann wrote:
On Tue, Sep 24, 2019 at 09:48:35AM -0600, Shuah Khan wrote:
On 9/24/19 9:43 AM, Yonghong Song wrote:
On 9/24/19 8:26 AM, Shuah Khan wrote:
Hi Alexei and Daniel,
bpf test doesn't build on Linux 5.4 mainline. Do you know what's happening here.
make -C tools/testing/selftests/bpf/
-c progs/test_core_reloc_ptr_as_arr.c -o - || echo "clang failed") | \ llc -march=bpf -mcpu=generic -filetype=obj -o /mnt/data/lkml/linux_5.4/tools/testing/selftests/bpf/test_core_reloc_ptr_as_arr.o
progs/test_core_reloc_ptr_as_arr.c:25:6: error: use of unknown builtin '__builtin_preserve_access_index' [-Wimplicit-function-declaration] if (BPF_CORE_READ(&out->a, &in[2].a)) ^ ./bpf_helpers.h:533:10: note: expanded from macro 'BPF_CORE_READ' __builtin_preserve_access_index(src)) ^ progs/test_core_reloc_ptr_as_arr.c:25:6: warning: incompatible integer to pointer conversion passing 'int' to parameter of type 'const void *' [-Wint-conversion] if (BPF_CORE_READ(&out->a, &in[2].a)) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./bpf_helpers.h:533:10: note: expanded from macro 'BPF_CORE_READ' __builtin_preserve_access_index(src)) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 warning and 1 error generated. llc: error: llc: <stdin>:1:1: error: expected top-level entity clang failed
Also
make TARGETS=bpf kselftest fails as well. Dependency between tools/lib/bpf and the test. How can we avoid this type of dependency or resolve it in a way it doesn't result in build failures?
Thanks, Shuah.
The clang __builtin_preserve_access_index() intrinsic is introduced in LLVM9 (which just released last week) and the builtin and other CO-RE features are only supported in LLVM10 (current development branch) with more bug fixes and added features.
I think we should do a feature test for llvm version and only enable these tests when llvm version >= 10.
Yes. If new tests depend on a particular llvm revision, the failing the build is a regression. I would like to see older tests that don't have dependency build and run.
So far we haven't made it a requirement as majority of BPF contributors that would run/add tests in here are also on bleeding edge LLVM anyway and other CIs like 0-day bot have simply upgraded their LLVM version from git whenever there was a failure similar to the one here so its ensured that really /all/ test cases are running and nothing would be skipped. There is worry to some degree that CIs just keep sticking to an old compiler since tests "just" pass and regressions wouldn't be caught on new releases for those that are skipped. >
Sure. Bleeding edge is developer mode. We still have to be concerned about users that might not upgrade quickly.
That said, for the C based tests, it should actually be straight forward to categorize them based on built-in macros like ...
$ echo | clang -dM -E - [...] #define __clang_major__ 10 #define __clang_minor__ 0 [...]
What would nice running the tests you can run and then say some tests aren't going to run. Is this something you can support?
Once there is such infra in place, should be possible.
... given there is now also bpf-gcc, the test matrix gets bigger anyway, so it might be worth rethinking to run the suite multiple times with different major llvm{,gcc} versions at some point to make sure their generated BPF bytecode keeps passing the verifier, and yell loudly if newer features had to be skipped due to lack of recent compiler version. This would be a super set of /just/ skipping tests and improve coverage at the same time.
Probably. Reality is most users will just quit and add bpf to "hard to run category" of tests.
I don't really worry too much about such users at this point, more important is that we have a way to test bpf-gcc and llvm behavior side by side to make sure behavior is consistent and to have some sort of automated CI integration that runs BPF kselftests before we even stare at a patch for review. These are right now the two highest prio items from BPF testing side where we need to get to.
I am also facing same issue with Linux-5.4 for ARM64 platforms. I am using ubuntu-18.04 which has LLVM version 6.0.0. Looks like there is no LLVM of version 9.0 or 10.0 available for ARM64. https://apt.llvm.org/
I also tried "sudo ./llvm.sh 9". But it does not install llvm version.
root@ubuntu$ sudo ./llvm.sh 9 + LLVM_VERSION=9 + '[' 1 -eq 1 ']' + LLVM_VERSION=9 ++ lsb_release -is + DISTRO=Ubuntu ++ lsb_release -sr + VERSION=18.04 + DIST_VERSION=Ubuntu_18.04 + [[ 0 -ne 0 ]] + declare -A LLVM_VERSION_PATTERNS + LLVM_VERSION_PATTERNS[8]=-8 + LLVM_VERSION_PATTERNS[9]=-9 + LLVM_VERSION_PATTERNS[10]= + '[' '!' _ ']' + LLVM_VERSION_STRING=-9 + case "$DIST_VERSION" in + REPO_NAME='deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-9 main' + wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key + apt-key add - --2019-10-16 03:33:34-- https://apt.llvm.org/llvm-snapshot.gpg.key Resolving apt.llvm.org (apt.llvm.org)... 151.101.190.49, 2a04:4e42:a::561 Connecting to apt.llvm.org (apt.llvm.org)|151.101.190.49|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 3145 (3.1K) [application/octet-stream] Saving to: ?STDOUT?
- 100%[====================================================================================================>] 3.07K --.-KB/s in 0s
2019-10-16 03:33:35 (74.8 MB/s) - written to stdout [3145/3145]
OK + add-apt-repository 'deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-9 main' Hit:1 http://apt.llvm.org/bionic llvm-toolchain-bionic InRelease Hit:2 http://apt.llvm.org/bionic llvm-toolchain-bionic-9 InRelease Hit:3 http://apt.llvm.org/bionic llvm-toolchain-bionic-8 InRelease Hit:4 http://us.ports.ubuntu.com/ubuntu-ports bionic InRelease Hit:5 http://us.ports.ubuntu.com/ubuntu-ports bionic-updates InRelease Hit:6 http://ports.ubuntu.com/ubuntu-ports bionic-security InRelease Hit:7 http://us.ports.ubuntu.com/ubuntu-ports bionic-backports InRelease Reading package lists... Done N: Skipping acquire of configured file 'main/binary-arm64/Packages' as repository 'http://apt.llvm.org/bionic llvm-toolchain-bionic InRelease' doesn't support architecture 'arm64' N: Skipping acquire of configured file 'main/binary-arm64/Packages' as repository 'http://apt.llvm.org/bionic llvm-toolchain-bionic-9 InRelease' doesn't support architecture 'arm64' N: Skipping acquire of configured file 'main/binary-arm64/Packages' as repository 'http://apt.llvm.org/bionic llvm-toolchain-bionic-8 InRelease' doesn't support architecture 'arm64' + apt-get update Hit:1 http://apt.llvm.org/bionic llvm-toolchain-bionic InRelease Hit:2 http://apt.llvm.org/bionic llvm-toolchain-bionic-9 InRelease Hit:3 http://apt.llvm.org/bionic llvm-toolchain-bionic-8 InRelease Hit:4 http://us.ports.ubuntu.com/ubuntu-ports bionic InRelease Hit:5 http://us.ports.ubuntu.com/ubuntu-ports bionic-updates InRelease Hit:6 http://ports.ubuntu.com/ubuntu-ports bionic-security InRelease Hit:7 http://us.ports.ubuntu.com/ubuntu-ports bionic-backports InRelease Reading package lists... Done N: Skipping acquire of configured file 'main/binary-arm64/Packages' as repository 'http://apt.llvm.org/bionic llvm-toolchain-bionic InRelease' doesn't support architecture 'arm64' N: Skipping acquire of configured file 'main/binary-arm64/Packages' as repository 'http://apt.llvm.org/bionic llvm-toolchain-bionic-9 InRelease' doesn't support architecture 'arm64' N: Skipping acquire of configured file 'main/binary-arm64/Packages' as repository 'http://apt.llvm.org/bionic llvm-toolchain-bionic-8 InRelease' doesn't support architecture 'arm64' + apt-get install -y clang-9 lldb-9 lld-9 clangd-9 Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package clang-9 E: Unable to locate package lldb-9 E: Unable to locate package lld-9 E: Unable to locate package clangd-9
--prabhakar(pk)
linux-kselftest-mirror@lists.linaro.org