Re: [PATCH bpf-next v3 0/5] bpf: tools: support build selftests/bpf with clang

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 4/13/21 8:34 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

I am using latest bpf-next kernel code base and
latest clang built from source from
   https://github.com/llvm/llvm-project.git
Using earlier version of llvm may have compilation errors, see
   tools/testing/selftests/bpf
due to continuous development in llvm bpf features and selftests
to use these features.

To run bpf selftest properly, you need have certain necessary
kernel configs like at:
   bpf-next:tools/testing/selftests/bpf/config
(not that this is not a complete .config file and some other configs
  might still be needed.)

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:
   v2 -> v3:
     . more test environment description in cover letter. (Sedat)
     . use a different fix, but similar to other use in selftests/bpf
       Makefile, to exclude header files from CXX compilation command
       line. (Andrii)
     . fix codes instead of adding -Wno-format-security. (Andrii)

I struggled to tweak my llvm setup, but at the end it compiled and
selftests/bpf/test_progs passed compiled by clang,
so I've applied to bpf-next.

The things I've seen:
1.
include <iostream> not found due to my setup quirks.
2.
diff selftests/bpf/tools/build/libbpf/libbpf_global_syms.tmp	
diff selftests/bpf/tools/build/libbpf/libbpf_versioned_syms.tmp	
 btf__set_pointer_size
 btf__str_by_offset
 btf__type_by_id
+LIBBPF_0.0.1
+LIBBPF_0.0.2
and this was happening with packaged llvm builds,
but my own llvm build was fine, so I didn't debug further.

3.
clang-12: error: unsupported option '-mrecord-mcount' for target 'x86_64-unknown-linux-gnu'
due to kernel not built with clang.

I suspect followups will be needed to make it bulletproof.



[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux