Skip to content

Commit

Permalink
libbpf: Assume unsigned values for BTF_KIND_ENUM
Browse files Browse the repository at this point in the history
Currently, BTF_KIND_ENUM type doesn't record whether enum values should be
interpreted as signed or unsigned. In Linux, most enums are unsigned, though,
so interpreting them as unsigned matches real world better.

Change btf_dump test case to test maximum 32-bit value, instead of negative
value.

Signed-off-by: Andrii Nakryiko <andriin@fb.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/bpf/20200303003233.3496043-3-andriin@fb.com
  • Loading branch information
Andrii Nakryiko authored and Daniel Borkmann committed Mar 4, 2020
1 parent 1aae4bd commit 7cb30aa
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 5 deletions.
8 changes: 4 additions & 4 deletions tools/lib/bpf/btf_dump.c
Original file line number Diff line number Diff line change
Expand Up @@ -916,13 +916,13 @@ static void btf_dump_emit_enum_def(struct btf_dump *d, __u32 id,
/* enumerators share namespace with typedef idents */
dup_cnt = btf_dump_name_dups(d, d->ident_names, name);
if (dup_cnt > 1) {
btf_dump_printf(d, "\n%s%s___%zu = %d,",
btf_dump_printf(d, "\n%s%s___%zu = %u,",
pfx(lvl + 1), name, dup_cnt,
(__s32)v->val);
(__u32)v->val);
} else {
btf_dump_printf(d, "\n%s%s = %d,",
btf_dump_printf(d, "\n%s%s = %u,",
pfx(lvl + 1), name,
(__s32)v->val);
(__u32)v->val);
}
}
btf_dump_printf(d, "\n%s}", pfx(lvl));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ enum e1 {

enum e2 {
C = 100,
D = -100,
D = 4294967295,
E = 0,
};

Expand Down

0 comments on commit 7cb30aa

Please sign in to comment.