bpftool: Dump the kernel symbol's module name
authorYafang Shao <laoar.shao@gmail.com>
Sun, 9 Jul 2023 02:56:22 +0000 (02:56 +0000)
committerAlexei Starovoitov <ast@kernel.org>
Wed, 12 Jul 2023 03:07:50 +0000 (20:07 -0700)
If the kernel symbol is in a module, we will dump the module name as
well. The square brackets around the module name are trimmed.

Signed-off-by: Yafang Shao <laoar.shao@gmail.com>
Reviewed-by: Quentin Monnet <quentin@isovalent.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Link: https://lore.kernel.org/r/20230709025630.3735-3-laoar.shao@gmail.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
tools/bpf/bpftool/xlated_dumper.c
tools/bpf/bpftool/xlated_dumper.h

index da608e10c843a4e7d26b06f61f7823d8cd2d0b31..567f56dfd9f1e5fa49007090a88f84245be1bd6b 100644 (file)
@@ -46,7 +46,11 @@ out:
                }
                dd->sym_mapping = tmp;
                sym = &dd->sym_mapping[dd->sym_count];
-               if (sscanf(buff, "%p %*c %s", &address, sym->name) != 2)
+
+               /* module is optional */
+               sym->module[0] = '\0';
+               /* trim the square brackets around the module name */
+               if (sscanf(buff, "%p %*c %s [%[^]]s", &address, sym->name, sym->module) < 2)
                        continue;
                sym->address = (unsigned long)address;
                if (!strcmp(sym->name, "__bpf_call_base")) {
index 9a946377b0e634107aaa73a2873dbab7ff2bcf69..db3ba0671501bd00f80148ae92771005850eefbb 100644 (file)
@@ -5,12 +5,14 @@
 #define __BPF_TOOL_XLATED_DUMPER_H
 
 #define SYM_MAX_NAME   256
+#define MODULE_MAX_NAME        64
 
 struct bpf_prog_linfo;
 
 struct kernel_sym {
        unsigned long address;
        char name[SYM_MAX_NAME];
+       char module[MODULE_MAX_NAME];
 };
 
 struct dump_data {