> 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. Thanks for the CC. That would be https://gcc.gnu.org/bugzilla. (I don't think this is a GCC issue and certainly not a libbpf one. Seems like the op is building a x86_64 object and not a BPF object.) > >> >> 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?