On 12/20, SuHsueyu wrote:
Hello, I use gcc 12.1.0 to compile a source file: t.c struct t { int a:2; int b:3; int c:2; } g; with gcc -c -gbtf t.c and try to use libbpf API btf__parse_split, bpf_object__open, and bpf_object__open to parse and load into the kernel, but it failed with "libbpf: elf: /path/to/t.o is not a valid eBPF object file".
Is it wrong for me to do so? Due to some constraint, I cannot use clang but gcc. How to parse and load gcc compiled object file with libbpf?
I haven't used gcc myself, so can't really help. All I can do is to point you to these two places: * https://gcc.gnu.org/wiki/BPFBackEnd * tools/testing/selftests/bpf/Makefile Maybe try to follow the instructions on that BPFBackEnd page and try to compile kernel's selftests to see what's missing?