On 4/12/21 6:44 PM, Sedat Dilek wrote:
On Mon, Apr 12, 2021 at 4:29 PM 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
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.
Might be good to add some hints like when the build stops or errors:
Like in my case when I had no CONFIG_DEBUG_INFO_BTF set.
Of course in combination with Clang-LTO a pointer "you need pahole
version 1.21." and CONFIG_DEBUG_INFO_BTF=y.
Finally, a hint for missing xxx-dev(el) packages (see Nick's report).
The tools directory has its own build rules thus I cannot say how to
check for specific Kconfigs.
I have not looked.
I will add some more information about how I have tested in the
cover letter.
NOTE: I have not checked without setting CONFIG_DEBUG_INFO.
- Sedat -
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