Message ID | 20210410164925.768741-1-yhs@fb.com (mailing list archive) |
---|---|
Headers | show |
Series | support build selftests/bpf with clang | expand |
On 4/10/21 9:49 AM, Yonghong Song 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 Will it use clang to compile libbpf and bpftool as well?
On 4/10/21 10:23 AM, Alexei Starovoitov wrote: > On 4/10/21 9:49 AM, Yonghong Song 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 > > Will it use clang to compile libbpf and bpftool as well? Yes. selftests, libbpf and bpftool will be all built with clang.
On Sat, Apr 10, 2021 at 6:49 PM Yonghong Song <yhs@fb.com> 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 > > But currently, 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. > > 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 | 4 +++- > tools/testing/selftests/lib.mk | 4 ++++ > 4 files changed, 18 insertions(+), 4 deletions(-) > > -- > 2.30.2 > Thanks for CCing me and taking care to clean BPF selftests with clang. I applied (adapted 4/5) the 5 patches to fit latest Linus Git. As I had a fresh compiled Clang-CFI kernel without enabling BTF debug-info KConfig this fails at some point. I am not sure what the situation is with Clang-CFI + BTF thus I will do another Clang-LTO build with BTF enabled. So, I was not able to build test_cpp. I am missing some comments that LLVM=1 misses to set CXX=clang++ if people want that explicitly as CXX. Did you try with this? AFAICS LC_ALL=C was not the culprit. Did you try with and without LC_ALL=C - I have this in all my build-scripts. Here I have German localisation as default. Wil report later... (might be Monday when Linux v5.12-rc7 is released). - Sedat -
On 4/10/21 12:19 PM, Sedat Dilek wrote: > On Sat, Apr 10, 2021 at 6:49 PM Yonghong Song <yhs@fb.com> 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 >> >> But currently, 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. >> >> 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 | 4 +++- >> tools/testing/selftests/lib.mk | 4 ++++ >> 4 files changed, 18 insertions(+), 4 deletions(-) >> >> -- >> 2.30.2 >> > > Thanks for CCing me and taking care to clean BPF selftests with clang. > > I applied (adapted 4/5) the 5 patches to fit latest Linus Git. > > As I had a fresh compiled Clang-CFI kernel without enabling BTF > debug-info KConfig this fails at some point. > I am not sure what the situation is with Clang-CFI + BTF thus I will > do another Clang-LTO build with BTF enabled. > So, I was not able to build test_cpp. > > I am missing some comments that LLVM=1 misses to set CXX=clang++ if > people want that explicitly as CXX. > Did you try with this? Yes, this patch set should fix this issue. > > AFAICS LC_ALL=C was not the culprit. > Did you try with and without LC_ALL=C - I have this in all my build-scripts. > Here I have German localisation as default. Just tried. Yes, LC_ALL=C does not impact compilation any more with this patch set. > > Wil report later... (might be Monday when Linux v5.12-rc7 is released). > > - Sedat - >