On Thu, Dec 10, 2020 at 4:31 PM Shuah Khan <skhan@xxxxxxxxxxxxxxxxxxx> wrote: > > On 12/10/20 5:10 PM, Andrew Delgadillo wrote: > > On Thu, Dec 10, 2020 at 3:08 PM Nick Desaulniers > > <ndesaulniers@xxxxxxxxxx> wrote: > >> > >> On Thu, Dec 3, 2020 at 2:10 PM Andrew Delgadillo <adelg@xxxxxxxxxx> wrote: > >>> > >>> lib.mk defaults to gcc when CC is not set. When building selftests > >>> as part of a kernel compilation, MAKEFLAGS is cleared to allow implicit > >>> build rules to be used. This has the side-effect of clearing the CC > >>> variable, which will cause selftests to be built with gcc regardless of > >>> if we are using gcc or clang. To remedy this, propagate the CC variable > >>> when clearing makeflags to ensure the correct compiler is used. > >>> > >>> Signed-off-by: Andrew Delgadillo <adelg@xxxxxxxxxx> > >> > >> Hi Andrew, thanks for the patch. Can you walk me through how to build > >> the selftests? > >> > >> Documentation/dev-tools/kselftest.rst says: > >> $ make -C tools/testing/selftests > >> > >> And if I do: > >> $ make CC=clang defconfig > >> $ make CC=clang -C tools/testing/selftests -j > >> > >> I observe a spew of errors. If I apply your patch and rerun the > >> above, I see what looks like the same spew of errors. Am I "holding > >> it wrong" or could the docs use a refresh? > >> > > > > Hi Nick, sure thing! > > > > I also see a slew of errors when building with make -C > > tools/testing/selftests. However, that is not the problem I am trying > > to solve. I believe we are seeing errors building that way because it > > is missing some make variables that are normally set up when building > > from the kernel's top level makefile. > > > > Both options are supported and should work. > > make -C tools/testing/selftests > make kselftest > > That being said, I use gcc. Can you send the errors you are seeing? > It is possible, a few tests aren't building and need to be fixed > for clang and gcc. Most of the errors I saw, I was able to fix by installing the correct packages to get some missing headers, so in those cases nothing is broken about the tests. However, after that the errors still remaining look like so (I've done my best to deduplicate similar errors): clone3_cap_checkpoint_restore.c: In function 'clone3_cap_checkpoint_restore': clone3_cap_checkpoint_restore.c:148:9: error: expected expression before 'return' XFAIL(return, "Skipping all tests as non-root\n"); ^ make[3]: *** [../lib.mk:139: /usr/local/google/home/adelg/projects/upstream/tools/testing/selftests/clone3/clone3_cap_checkpoint_restore] Error 1 memfd_test.c: In function 'test_seal_future_write': memfd_test.c:783:27: error: 'F_SEAL_FUTURE_WRITE' undeclared (first use in this function) mfd_assert_add_seals(fd, F_SEAL_FUTURE_WRITE); ^ memfd_test.c:783:27: note: each undeclared identifier is reported only once for each function it appears in /usr/local/***/lib/../lib64/librt.so: undefined reference to `pthread_attr_setstacksize@GLIBC_2.2.5' collect2: error: ld returned 1 exit status There are also bpf selftest errors, but I know for a fact those are just an artifact of me not having llvm-readelf and other binaries in my PATH as I've compiled those successfully before. > > thanks, > -- Shuah >