koti
January 6, 2023, 4:08pm
1
Hi,
My llvm-14.0.6 toolchain i built does not support ‘bpf’ target . I need to support ‘bpf’ target support to build samples/bpf/ in kernel source.
Currently llc support only below targets.
{{
clang/bin/llc --version
LLVM (http://llvm.org/ ):
LLVM version 14.0.6
Optimized build.
Default target: x86_64-ftnt-linux-gnu
Host CPU: rocketlake
Registered Targets:
x86 - 32-bit X86: Pentium-Pro and above
x86-64 - 64-bit X86: EM64T and AMD64
}}
i referred BPF: How can I enable BPF support in my LLVM toolchain? but it contains build-llvm.py specific fix which can not adopted to build root environment llvm package build . Request to share fix to add ‘bpf’ target as part of building llvm package?
Regards
Koti
jrtc27
January 6, 2023, 4:36pm
2
BPF is in LLVM_ALL_TARGETS so is built when LLVM_TARGETS_TO_BUILD is set to all, its default value. It looks like your LLVM build was built with -DLLVM_TARGETS_TO_BUILD=X86 (or -DLLVM_TARGETS_TO_BUILD=host on an x86 machine); if you built it yourself, don’t do that, otherwise go talk to whoever built the LLVM you’re using.
koti
January 6, 2023, 5:10pm
3
Dear Clarke
Thank you for you reply. I just explored LLVM-14.0.6 configure log displayed during llvm-14.0.6 package build and i noticed “LLVM_TARGETS_TO_BUILD=X86;BPF” . both BPF and x86 target’s llvm package build is configured. Please see all configured log given below.
{{
host-llvm 14.0.6 Configuring
(mkdir -p /root/build/build/buildroot-build/build/host-llvm-14.0.6//buildroot-build && cd /root/build/build/buildroot-build/build/host-llvm-14.0.6//buildroot-build && rm -f CMakeCache.txt && PATH=“/fwebdev4/bin:/fwebdev4/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin” PKG_CONFIG=“/fwebdev4/bin/pkg-config” PKG_CONFIG_SYSROOT_DIR=“/” PKG_CONFIG_LIBDIR=“/fwebdev4/lib/pkgconfig:/fwebdev4/share/pkgconfig” PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 PKG_CONFIG_ALLOW_SYSTEM_LIBS=1 /fwebdev4/bin/cmake /root/build/build/buildroot-build/build/host-llvm-14.0.6/ -DCMAKE_INSTALL_SO_NO_EXE=0 -DCMAKE_FIND_ROOT_PATH=“/fwebdev4” -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=“BOTH” -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=“BOTH” -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=“BOTH” -DCMAKE_INSTALL_PREFIX=“/fwebdev4” -DCMAKE_C_FLAGS=“-O2 -I/fwebdev4/include” -DCMAKE_CXX_FLAGS=“-O2 -I/fwebdev4/include” -DCMAKE_EXE_LINKER_FLAGS=“-L/fwebdev4/lib -Wl,-rpath,/fwebdev4/lib” -DCMAKE_SHARED_LINKER_FLAGS=“-L/fwebdev4/lib -Wl,-rpath,/fwebdev4/lib” -DCMAKE_ASM_COMPILER=“/usr/bin/as” -DCMAKE_C_COMPILER=“/usr/bin/gcc” -DCMAKE_CXX_COMPILER=“/usr/bin/g++” -DCMAKE_C_COMPILER_LAUNCHER=“/fwebdev4/bin/ccache” -DCMAKE_CXX_COMPILER_LAUNCHER=“/fwebdev4/bin/ccache” -DCMAKE_COLOR_MAKEFILE=OFF -DBUILD_DOC=OFF -DBUILD_DOCS=OFF -DBUILD_EXAMPLE=OFF -DBUILD_EXAMPLES=OFF -DBUILD_TEST=OFF -DBUILD_TESTS=OFF -DBUILD_TESTING=OFF -DBUILD_SHARED_LIBS=ON -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON -DLLVM_ENABLE_PROJECTS=“” -DLLVM_CCACHE_BUILD=ON -DCMAKE_INSTALL_RPATH=“/fwebdev4/lib” -DLLVM_TARGETS_TO_BUILD="X86;BPF " -DLLVM_TARGET_ARCH=X86 -DBUILD_SHARED_LIBS=OFF -DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_LINK_LLVM_DYLIB=ON -DLLVM_ENABLE_LIBEDIT=OFF -DLLVM_INSTALL_TOOLCHAIN_ONLY=OFF -DLLVM_APPEND_VC_REV=OFF -DLLVM_ENABLE_BACKTRACES=OFF -DENABLE_CRASH_OVERRIDES=ON -DLLVM_ENABLE_FFI=OFF -DLLVM_ENABLE_TERMINFO=OFF -DLLVM_ENABLE_THREADS=ON -DLLVM_ENABLE_ZLIB=ON -DLLVM_ENABLE_LIBXML2=OFF -DLLVM_ENABLE_Z3_SOLVER=OFF -DLLVM_ENABLE_PIC=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_STANDARD=14 -DLLVM_ENABLE_MODULES=OFF -DLLVM_ENABLE_MODULE_DEBUGGING=OFF -DLLVM_ENABLE_LIBCXX=OFF -DLLVM_ENABLE_LLD=OFF -DLLVM_DEFAULT_TARGET_TRIPLE=x86_64-ftnt-linux-gnu -DLLVM_ENABLE_BINDINGS=OFF -DLLVM_OPTIMIZED_TABLEGEN=ON -DLLVM_BUILD_UTILS=ON -DLLVM_INCLUDE_UTILS=ON -DLLVM_INSTALL_UTILS=ON -DLLVM_INCLUDE_TOOLS=ON -DLLVM_BUILD_TOOLS=ON -DLLVM_ENABLE_RTTI=ON -DLLVM_BUILD_EXTERNAL_COMPILER_RT=OFF -DLLVM_BUILD_RUNTIME=OFF -DLLVM_INCLUDE_RUNTIMES=OFF -DLLVM_ENABLE_WARNINGS=ON -DLLVM_ENABLE_PEDANTIC=ON -DLLVM_ENABLE_WERROR=OFF -DLLVM_BUILD_EXAMPLES=OFF -DLLVM_BUILD_DOCS=OFF -DLLVM_BUILD_TESTS=OFF -DLLVM_ENABLE_DOXYGEN=OFF -DLLVM_ENABLE_OCAMLDOC=OFF -DLLVM_ENABLE_SPHINX=OFF -DLLVM_INCLUDE_EXAMPLES=OFF -DLLVM_INCLUDE_DOCS=OFF -DLLVM_INCLUDE_GO_TESTS=OFF -DLLVM_INCLUDE_TESTS=OFF -DLLVM_INCLUDE_BENCHMARKS=OFF )
}}
But still “llc” is Registered Target for x86 only as mentioned in my previous comment.
Regads
Koti
dileks
January 6, 2023, 5:24pm
4
I use tc-build for building my selfmade LLVM toolchains on Debian/unstable AMD64.
BPF is now build by default in tc-build.
For details see:
opened 12:13PM - 11 Jan 21 UTC
closed 05:01PM - 11 Jan 21 UTC
Debian-kernel team started to set `CONFIG_DEBUG_INFO_BTF=y`.
First, this need… s `pahole` binary from `dwarves` package (minimum: `v1.16`).
```
$ pahole --version
v1.19
```
Second, your LLVM toolchain needs `BPF support` enabled.
My selfmade LLVM toolchain v11.0.1 does not have this:
```
$ which llc
/home/dileks/src/llvm-toolchain/install/bin/llc
$ llc --version
LLVM (http://llvm.org/):
LLVM version 11.0.1
Optimized build.
Default target: x86_64-unknown-linux-gnu
Host CPU: sandybridge
Registered Targets:
x86 - 32-bit X86: Pentium-Pro and above
x86-64 - 64-bit X86: EM64T and AMD64
```
Debian's LLC has BPF support:
```
$ /usr/bin/llc-11 --version | grep -i bpf
bpf - BPF (host endian)
bpfeb - BPF (big endian)
bpfel - BPF (little endian)
```
Is it possible to have an option to enable `BPF support`?
Thanks.
[1] https://salsa.debian.org/kernel-team/linux/-/commit/929891281c61ce4403ddd869664c949692644a2f
[2] https://www.kernel.org/doc/html/latest/bpf/bpf_devel_QA.html?highlight=pahole#llvm
[3] https://www.kernel.org/doc/html/latest/bpf/btf.html?highlight=pahole#btf-generation
jrtc27
January 6, 2023, 5:57pm
5
That should work fine, are you sure you’re using the result of that build?
dileks
January 6, 2023, 6:14pm
6
…is correct.
Is the build-log showing?
-- Targeting X86
-- Targeting BPF
Also, such information can be seen in CMakeCache.txt
.
Do you build from a clean (build) environment (e.g. from scratch)?
koti
January 6, 2023, 6:29pm
7
dileks:
CMakeCache
Hi,
Yes. i am building from scratch.
– Targeting X86
– Targeting BPF
i referred CMakeCache.txt but contents didn’t shown above exact log.
Attached it for reference.
Regards
Koti
CMakeCache.txt (64.1 KB)
dileks
January 6, 2023, 6:34pm
8
Your CmakeCache.txt
has:
//Semicolon-separated list of targets to build, or "all".
LLVM_TARGETS_TO_BUILD:STRING=X86;BPF
dileks
January 6, 2023, 6:43pm
9
Again, when you run your cmake
line you should see:
-- Targeting BPF
koti
January 6, 2023, 6:56pm
10
Hi,
I am rebuilding llvm package to check if above statement is seen or not.
will share detailed log once found it …
Regards
Koti
dileks
January 6, 2023, 6:57pm
11
You see this in the configure
state before your build starts.
koti
January 10, 2023, 12:07pm
12
Hi,
The problem fixed after porting LLVM Backend bpf support patch exists in latest buildroot version code.
Thanks and Regards
Koti