As CONFIG_DEBUG_INFO_BTF is default off the existing "failed to find valid kernel BTF" message makes diagnosing the kernel build issue some what cryptic. Add a little more detail with the hope of helping users. Before: ``` libbpf: failed to find valid kernel BTF libbpf: Error loading vmlinux BTF: -3 libbpf: failed to load object 'lock_contention_bpf' libbpf: failed to load BPF skeleton 'lock_contention_bpf': -3 ``` After no access: ``` libbpf: failed to find a kernel (typically /sys/kernel/btf/vmlinux) for BTF data libbpf: Error loading vmlinux BTF: -3 libbpf: failed to load object 'lock_contention_bpf' libbpf: failed to load BPF skeleton 'lock_contention_bpf': -3 ``` After no BTF: ``` libbpf: failed to find BTF in kernel (was CONFIG_DEBUG_INFO_BTF enabled?) libbpf: Error loading vmlinux BTF: -3 libbpf: failed to load object 'lock_contention_bpf' libbpf: failed to load BPF skeleton 'lock_contention_bpf': -3 ``` Closes: https://lore.kernel.org/bpf/CAP-5=fU+DN_+Y=Y4gtELUsJxKNDDCOvJzPHvjUVaUoeFAzNnig@xxxxxxxxxxxxxx/ Signed-off-by: Ian Rogers <irogers@xxxxxxxxxx> --- tools/lib/bpf/btf.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tools/lib/bpf/btf.c b/tools/lib/bpf/btf.c index ee95fd379d4d..505c0fb2d1ed 100644 --- a/tools/lib/bpf/btf.c +++ b/tools/lib/bpf/btf.c @@ -4942,6 +4942,7 @@ struct btf *btf__load_vmlinux_btf(void) struct utsname buf; struct btf *btf; int i, err; + bool found_path = false; uname(&buf); @@ -4951,6 +4952,7 @@ struct btf *btf__load_vmlinux_btf(void) if (faccessat(AT_FDCWD, path, R_OK, AT_EACCESS)) continue; + found_path = true; btf = btf__parse(path, NULL); err = libbpf_get_error(btf); pr_debug("loading kernel BTF '%s': %d\n", path, err); @@ -4960,7 +4962,11 @@ struct btf *btf__load_vmlinux_btf(void) return btf; } - pr_warn("failed to find valid kernel BTF\n"); + if (found_path) + pr_warn("failed to find BTF in kernel (was CONFIG_DEBUG_INFO_BTF enabled?)\n"); + else + pr_warn("failed to find a kernel (typically /sys/kernel/btf/vmlinux) for BTF data\n"); + return libbpf_err_ptr(-ESRCH); } -- 2.43.0.429.g432eaa2c6b-goog