bpftool: Print function linkage in BTF dump
Add printing out BTF_KIND_FUNC's linkage. Signed-off-by: Andrii Nakryiko <andriin@fb.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Acked-by: Martin KaFai Lau <kafai@fb.com> Acked-by: Toke Høiland-Jørgensen <toke@redhat.com> Link: https://lore.kernel.org/bpf/20200124054317.2459436-1-andriin@fb.com
This commit is contained in:
parent
03506297d2
commit
41258289a8
|
@ -77,6 +77,20 @@ static const char *btf_var_linkage_str(__u32 linkage)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const char *btf_func_linkage_str(const struct btf_type *t)
|
||||||
|
{
|
||||||
|
switch (btf_vlen(t)) {
|
||||||
|
case BTF_FUNC_STATIC:
|
||||||
|
return "static";
|
||||||
|
case BTF_FUNC_GLOBAL:
|
||||||
|
return "global";
|
||||||
|
case BTF_FUNC_EXTERN:
|
||||||
|
return "extern";
|
||||||
|
default:
|
||||||
|
return "(unknown)";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static const char *btf_str(const struct btf *btf, __u32 off)
|
static const char *btf_str(const struct btf *btf, __u32 off)
|
||||||
{
|
{
|
||||||
if (!off)
|
if (!off)
|
||||||
|
@ -231,12 +245,17 @@ static int dump_btf_type(const struct btf *btf, __u32 id,
|
||||||
printf(" fwd_kind=%s", fwd_kind);
|
printf(" fwd_kind=%s", fwd_kind);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case BTF_KIND_FUNC:
|
case BTF_KIND_FUNC: {
|
||||||
if (json_output)
|
const char *linkage = btf_func_linkage_str(t);
|
||||||
|
|
||||||
|
if (json_output) {
|
||||||
jsonw_uint_field(w, "type_id", t->type);
|
jsonw_uint_field(w, "type_id", t->type);
|
||||||
else
|
jsonw_string_field(w, "linkage", linkage);
|
||||||
printf(" type_id=%u", t->type);
|
} else {
|
||||||
|
printf(" type_id=%u linkage=%s", t->type, linkage);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
case BTF_KIND_FUNC_PROTO: {
|
case BTF_KIND_FUNC_PROTO: {
|
||||||
const struct btf_param *p = (const void *)(t + 1);
|
const struct btf_param *p = (const void *)(t + 1);
|
||||||
__u16 vlen = BTF_INFO_VLEN(t->info);
|
__u16 vlen = BTF_INFO_VLEN(t->info);
|
||||||
|
|
Loading…
Reference in New Issue