On Tue, Dec 20, 2022 at 3:56 AM SuHsueyu <anolasc13@xxxxxxxxx> 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". if (ehdr->e_type != ET_REL || (ehdr->e_machine && ehdr->e_machine != EM_BPF)) This check is failing in libbpf. So check which of those two are not set appropriately. cc Jose to point where to report GCC-BPF specific issues. > > 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?