bpftool: Show target_{obj,btf}_id in tracing link info
authorYafang Shao <laoar.shao@gmail.com>
Wed, 17 May 2023 10:31:26 +0000 (10:31 +0000)
committerAlexei Starovoitov <ast@kernel.org>
Fri, 19 May 2023 17:06:45 +0000 (10:06 -0700)
The target_btf_id can help us understand which kernel function is
linked by a tracing prog. The target_btf_id and target_obj_id have
already been exposed to userspace, so we just need to show them.

The result as follows,

$ tools/bpf/bpftool/bpftool link show
2: tracing  prog 13
        prog_type tracing  attach_type trace_fentry
        target_obj_id 1  target_btf_id 13964
        pids trace(10673)

$ tools/bpf/bpftool/bpftool link show -j
[{"id":2,"type":"tracing","prog_id":13,"prog_type":"tracing","attach_type":"trace_fentry","target_obj_id":1,"target_btf_id":13964,"pids":[{"pid":10673,"comm":"trace"}]}]

Signed-off-by: Yafang Shao <laoar.shao@gmail.com>
Acked-by: Song Liu <song@kernel.org>
Link: https://lore.kernel.org/r/20230517103126.68372-3-laoar.shao@gmail.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
tools/bpf/bpftool/link.c

index 243b74e18e511db369f63ff62b4fc49e352f064c..2d786072ed0d03efa53b13dd83f594e791a75f11 100644 (file)
@@ -195,6 +195,8 @@ static int show_link_close_json(int fd, struct bpf_link_info *info)
 
                show_link_attach_type_json(info->tracing.attach_type,
                                           json_wtr);
+               jsonw_uint_field(json_wtr, "target_obj_id", info->tracing.target_obj_id);
+               jsonw_uint_field(json_wtr, "target_btf_id", info->tracing.target_btf_id);
                break;
        case BPF_LINK_TYPE_CGROUP:
                jsonw_lluint_field(json_wtr, "cgroup_id",
@@ -375,6 +377,10 @@ static int show_link_close_plain(int fd, struct bpf_link_info *info)
                        printf("\n\tprog_type %u  ", prog_info.type);
 
                show_link_attach_type_plain(info->tracing.attach_type);
+               if (info->tracing.target_obj_id || info->tracing.target_btf_id)
+                       printf("\n\ttarget_obj_id %u  target_btf_id %u  ",
+                              info->tracing.target_obj_id,
+                              info->tracing.target_btf_id);
                break;
        case BPF_LINK_TYPE_CGROUP:
                printf("\n\tcgroup_id %zu  ", (size_t)info->cgroup.cgroup_id);