Skip to contentSkip to conversation

perf bpf: Show better message when failing to load an object

tip:perf/core tip-bot for Arnaldo Carvalho de Melo 1 participant 1 message Aug 2, 2018 perf events

lore
Share & tools
lore
#0 lore raw
Commit-ID:  739e2edc848af30fefa66d6c422c00ca9a701c06
Gitweb:     https://git.kernel.org/tip/739e2edc848af30fefa66d6c422c00ca9a701c06
Author:     Arnaldo Carvalho de Melo <[email protected]>
AuthorDate: Tue, 31 Jul 2018 11:58:57 -0300
Committer:  Arnaldo Carvalho de Melo <[email protected]>
CommitDate: Tue, 31 Jul 2018 11:58:57 -0300

perf bpf: Show better message when failing to load an object

Before:

libbpf: license of tools/perf/examples/bpf/etcsnoop.c is GPL
libbpf: section(6) version, size 4, link 0, flags 3, type=1
libbpf: kernel version of tools/perf/examples/bpf/etcsnoop.c is 41200
libbpf: section(7) .symtab, size 120, link 1, flags 0, type=2
bpf: config program 'syscalls:sys_enter_openat'
libbpf: load bpf program failed: Operation not permitted
libbpf: failed to load program 'syscalls:sys_enter_openat'
libbpf: failed to load object 'tools/perf/examples/bpf/etcsnoop.c'
bpf: load objects failed

After: (just the last line changes)

bpf: load objects failed: err=-4009: (Incorrect kernel version)

---
 tools/perf/util/bpf-loader.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
tools/perf/util/bpf-loader.c +3 -1
index cee658733e2c..3d02ae38ec56 100644
@@ -747,7 +747,9 @@ int bpf__load(struct bpf_object *obj)
 
 	err = bpf_object__load(obj);
 	if (err) {
-		pr_debug("bpf: load objects failed\n");
+		char bf[128];
+		libbpf_strerror(err, bf, sizeof(bf));
+		pr_debug("bpf: load objects failed: err=%d: (%s)\n", err, bf);
 		return err;
 	}
 	return 0;