Commit 7cb30aaa authored by Andrii Nakryiko's avatar Andrii Nakryiko Committed by Daniel Borkmann
Browse files

libbpf: Assume unsigned values for BTF_KIND_ENUM



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: default avatarAndrii Nakryiko <andriin@fb.com>
Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/bpf/20200303003233.3496043-3-andriin@fb.com
parent 1aae4bdd
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -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));
+1 −1
Original line number Diff line number Diff line
@@ -13,7 +13,7 @@ enum e1 {

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