On Mon, Sep 13, 2021 at 8:51 AM Yonghong Song <yhs@xxxxxx> wrote: > > Added bpftool support to dump BTF_KIND_TAG information. > The new bpftool will be used in later patches to dump > btf in the test bpf program object file. > > Currently, the tags are not emitted with > bpftool btf dump file <path> format c > and they are silently ignored. The tag information is > mostly used in the kernel for verification purpose and the kernel > uses its own btf to check. With adding these tags > to vmlinux.h, tags will be encoded in program's btf but > they will not be used by the kernel, at least for now. > So let us delay adding these tags to format C header files > until there is a real need. > > Signed-off-by: Yonghong Song <yhs@xxxxxx> > --- Acked-by: Andrii Nakryiko <andrii@xxxxxxxxxx> > tools/bpf/bpftool/btf.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/tools/bpf/bpftool/btf.c b/tools/bpf/bpftool/btf.c > index f7e5ff3586c9..49743ad96851 100644 > --- a/tools/bpf/bpftool/btf.c > +++ b/tools/bpf/bpftool/btf.c > @@ -37,6 +37,7 @@ static const char * const btf_kind_str[NR_BTF_KINDS] = { > [BTF_KIND_VAR] = "VAR", > [BTF_KIND_DATASEC] = "DATASEC", > [BTF_KIND_FLOAT] = "FLOAT", > + [BTF_KIND_TAG] = "TAG", > }; > > struct btf_attach_table { > @@ -347,6 +348,17 @@ static int dump_btf_type(const struct btf *btf, __u32 id, > printf(" size=%u", t->size); > break; > } > + case BTF_KIND_TAG: { > + const struct btf_tag *tag = (const void *)(t + 1); > + > + if (json_output) { > + jsonw_uint_field(w, "type_id", t->type); > + jsonw_int_field(w, "component_idx", tag->component_idx); > + } else { > + printf(" type_id=%u component_idx=%d", t->type, tag->component_idx); > + } > + break; > + } > default: > break; > } > -- > 2.30.2 >