On Tue, Dec 20, 2022 at 09:31:14AM +0800, Changbin Du wrote: [...] > > > Now will print below info: > > > libbpf: failed to find '.BTF' ELF section in /home/changbin/work/linux/vmlinux > > > > Recently I encountered the same issue, it could be caused by: > > either missing to install tool pahole or missing to enable kernel > > configuration CONFIG_DEBUG_INFO_BTF. > > > > Could we give explict info for reasoning failure? Like: > > > > "libbpf: failed to find '.BTF' ELF section in /home/changbin/work/linux/vmlinux, > > please install pahole and enable CONFIG_DEBUG_INFO_BTF=y for kernel building". > > > This is vmlinux special information and similar tips are removed from > patch V2. libbpf is common for all ELFs. Okay, I see. Sorry for noise. > > > Error: failed to load BTF from /home/changbin/work/linux/vmlinux: No such file or directory > > > > This log is confusing when we can find vmlinux file but without BTF > > section. Consider to use a separate patch to detect vmlinux not > > found case and print out "No such file or directory"? > > > I think it's already there. If the file doesn't exist, open will fail. [...] > > > @@ -990,6 +990,7 @@ static struct btf *btf_parse_elf(const char *path, struct btf *base_btf, > > > err = 0; > > > > > > if (!btf_data) { > > > + pr_warn("failed to find '%s' ELF section in %s\n", BTF_ELF_SEC, path); > > > err = -ENOENT; btf_parse_elf() returns -ENOENT when ELF file doesn't contain BTF section, therefore, bpftool dumps error string "No such file or directory". It's confused that actually vmlinux is existed. I am wondering if we can use error -LIBBPF_ERRNO__FORMAT (or any better choice?) to replace -ENOENT at here, this can avoid bpftool to outputs "No such file or directory" in this case. Thanks, Leo