aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/faddr2line
diff options
context:
space:
mode:
authorYonghong Song <yhs@fb.com>2018-11-28 09:38:23 -0800
committerAlexei Starovoitov <ast@kernel.org>2018-11-28 16:40:02 -0800
commit528bff0cdb6649f97f2c4802e4ac7a4b50645f2f (patch)
tree057a93e4b227145b587f6b88598e814b0bf2e792 /scripts/faddr2line
parentMerge branch 'btf-check-name' (diff)
downloadlinux-dev-528bff0cdb6649f97f2c4802e4ac7a4b50645f2f.tar.xz
linux-dev-528bff0cdb6649f97f2c4802e4ac7a4b50645f2f.zip
tools: bpftool: fix a bitfield pretty print issue
Commit b12d6ec09730 ("bpf: btf: add btf print functionality") added btf pretty print functionality to bpftool. There is a problem though in printing a bitfield whose type has modifiers. For example, for a type like typedef int ___int; struct tmp_t { int a:3; ___int b:3; }; Suppose we have a map struct bpf_map_def SEC("maps") tmpmap = { .type = BPF_MAP_TYPE_HASH, .key_size = sizeof(__u32), .value_size = sizeof(struct tmp_t), .max_entries = 1, }; and the hash table is populated with one element with key 0 and value (.a = 1 and .b = 2). In BTF, the struct member "b" will have a type "typedef" which points to an int type. The current implementation does not pass the bit offset during transition from typedef to int type, hence incorrectly print the value as $ bpftool m d id 79 [{ "key": 0, "value": { "a": 0x1, "b": 0x1 } } ] This patch fixed the issue by carrying bit_offset along the type chain during bit_field print. The correct result can be printed as $ bpftool m d id 76 [{ "key": 0, "value": { "a": 0x1, "b": 0x2 } } ] The kernel pretty print is implemented correctly and does not have this issue. Fixes: b12d6ec09730 ("bpf: btf: add btf print functionality") Signed-off-by: Yonghong Song <yhs@fb.com> Acked-by: Song Liu <songliubraving@fb.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Diffstat (limited to 'scripts/faddr2line')
0 files changed, 0 insertions, 0 deletions