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) {
err = -ENOENT;pr_warn("failed to find '%s' ELF section in %s\n", BTF_ELF_SEC, path);
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