selftests/bpf: add fwd enum resolution test for btf_dedup
This patch adds test verifying new btf_dedup logic of resolving forward-declared enums. Signed-off-by: Andrii Nakryiko <andriin@fb.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
parent
9768095ba9
commit
8fd7a61aa5
tools/testing/selftests/bpf
|
@ -5874,6 +5874,50 @@ const struct btf_dedup_test dedup_tests[] = {
|
||||||
.dont_resolve_fwds = false,
|
.dont_resolve_fwds = false,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.descr = "dedup: enum fwd resolution",
|
||||||
|
.input = {
|
||||||
|
.raw_types = {
|
||||||
|
/* [1] fwd enum 'e1' before full enum */
|
||||||
|
BTF_TYPE_ENC(NAME_NTH(1), BTF_INFO_ENC(BTF_KIND_ENUM, 0, 0), 4),
|
||||||
|
/* [2] full enum 'e1' after fwd */
|
||||||
|
BTF_TYPE_ENC(NAME_NTH(1), BTF_INFO_ENC(BTF_KIND_ENUM, 0, 1), 4),
|
||||||
|
BTF_ENUM_ENC(NAME_NTH(2), 123),
|
||||||
|
/* [3] full enum 'e2' before fwd */
|
||||||
|
BTF_TYPE_ENC(NAME_NTH(3), BTF_INFO_ENC(BTF_KIND_ENUM, 0, 1), 4),
|
||||||
|
BTF_ENUM_ENC(NAME_NTH(4), 456),
|
||||||
|
/* [4] fwd enum 'e2' after full enum */
|
||||||
|
BTF_TYPE_ENC(NAME_NTH(3), BTF_INFO_ENC(BTF_KIND_ENUM, 0, 0), 4),
|
||||||
|
/* [5] incompatible fwd enum with different size */
|
||||||
|
BTF_TYPE_ENC(NAME_NTH(1), BTF_INFO_ENC(BTF_KIND_ENUM, 0, 0), 1),
|
||||||
|
/* [6] incompatible full enum with different value */
|
||||||
|
BTF_TYPE_ENC(NAME_NTH(1), BTF_INFO_ENC(BTF_KIND_ENUM, 0, 1), 4),
|
||||||
|
BTF_ENUM_ENC(NAME_NTH(2), 321),
|
||||||
|
BTF_END_RAW,
|
||||||
|
},
|
||||||
|
BTF_STR_SEC("\0e1\0e1_val\0e2\0e2_val"),
|
||||||
|
},
|
||||||
|
.expect = {
|
||||||
|
.raw_types = {
|
||||||
|
/* [1] full enum 'e1' */
|
||||||
|
BTF_TYPE_ENC(NAME_NTH(1), BTF_INFO_ENC(BTF_KIND_ENUM, 0, 1), 4),
|
||||||
|
BTF_ENUM_ENC(NAME_NTH(2), 123),
|
||||||
|
/* [2] full enum 'e2' */
|
||||||
|
BTF_TYPE_ENC(NAME_NTH(3), BTF_INFO_ENC(BTF_KIND_ENUM, 0, 1), 4),
|
||||||
|
BTF_ENUM_ENC(NAME_NTH(4), 456),
|
||||||
|
/* [3] incompatible fwd enum with different size */
|
||||||
|
BTF_TYPE_ENC(NAME_NTH(1), BTF_INFO_ENC(BTF_KIND_ENUM, 0, 0), 1),
|
||||||
|
/* [4] incompatible full enum with different value */
|
||||||
|
BTF_TYPE_ENC(NAME_NTH(1), BTF_INFO_ENC(BTF_KIND_ENUM, 0, 1), 4),
|
||||||
|
BTF_ENUM_ENC(NAME_NTH(2), 321),
|
||||||
|
BTF_END_RAW,
|
||||||
|
},
|
||||||
|
BTF_STR_SEC("\0e1\0e1_val\0e2\0e2_val"),
|
||||||
|
},
|
||||||
|
.opts = {
|
||||||
|
.dont_resolve_fwds = false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue