On Mon, Apr 12, 2021 at 7:29 AM Yonghong Song <yhs@xxxxxx> wrote: > > To build kernel with clang, people typically use > make -j60 LLVM=1 LLVM_IAS=1 > LLVM_IAS=1 is not required for non-LTO build but > is required for LTO build. In my environment, > I am always having LLVM_IAS=1 regardless of > whether LTO is enabled or not. > > After kernel is build with clang, the following command > can be used to build selftests with clang: > make -j60 -C tools/testing/selftests/bpf LLVM=1 LLVM_IAS=1 Thank you for the series Yonghong. When I test the above command with your series applied, I observe: /usr/bin/ld: cannot find -lcap clang-13: error: linker command failed with exit code 1 (use -v to see invocation) I need to install libcap-dev, but this also seems to imply that BFD is being used as the linker, not LLD. Perhaps if the compiler is being used as the "driver" to also link executables, `-fuse-ld=lld` is needed for the compiler flags. Then there's: tools/include/tools/libc_compat.h:11:21: error: static declaration of 'reallocarray' follows non-static declaration static inline void *reallocarray(void *ptr, size_t nmemb, size_t size) ^ /usr/include/stdlib.h:559:14: note: previous declaration is here extern void *reallocarray (void *__ptr, size_t __nmemb, size_t __size) ^ so perhaps the detection of COMPAT_NEED_REALLOCARRAY/feature-reallocarray is incorrect? > > But currently, using the above command, some compilations > still use gcc and there are also compilation errors and warnings. > This patch set intends to fix these issues. > Patch #1 and #2 fixed the issue so clang/clang++ is > used instead of gcc/g++. Patch #3 fixed a compilation > failure. Patch #4 and #5 fixed various compiler warnings. > > Changelog: > v1 -> v2: > . add -Wno-unused-command-line-argument and -Wno-format-security > for clang only as (1). gcc does not exhibit those > warnings, and (2). -Wno-unused-command-line-argument is > only supported by clang. (Sedat) > > Yonghong Song (5): > selftests: set CC to clang in lib.mk if LLVM is set > tools: allow proper CC/CXX/... override with LLVM=1 in > Makefile.include > selftests/bpf: fix test_cpp compilation failure with clang > selftests/bpf: silence clang compilation warnings > bpftool: fix a clang compilation warning > > tools/bpf/bpftool/net.c | 2 +- > tools/scripts/Makefile.include | 12 ++++++++++-- > tools/testing/selftests/bpf/Makefile | 7 ++++++- > tools/testing/selftests/lib.mk | 4 ++++ > 4 files changed, 21 insertions(+), 4 deletions(-) > > -- > 2.30.2 > -- Thanks, ~Nick Desaulniers