selftests/bpf: Add test for the packed enum member in struct/union
Add a simple test to the existing selftest program in order to make sure that a packed enum member in struct unexceeds the struct_size. Signed-off-by: Yoshiki Komachi <komachi.yoshiki@gmail.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org> Link: https://lore.kernel.org/bpf/1583825550-18606-3-git-send-email-komachi.yoshiki@gmail.com
This commit is contained in:
parent
da6c7faeb1
commit
6ffe559a77
@ -1062,6 +1062,48 @@ static struct btf_raw_test raw_tests[] = {
|
|||||||
.err_str = "Member exceeds struct_size",
|
.err_str = "Member exceeds struct_size",
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/* Test member unexceeds the size of struct
|
||||||
|
*
|
||||||
|
* enum E {
|
||||||
|
* E0,
|
||||||
|
* E1,
|
||||||
|
* };
|
||||||
|
*
|
||||||
|
* struct A {
|
||||||
|
* char m;
|
||||||
|
* enum E __attribute__((packed)) n;
|
||||||
|
* };
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
.descr = "size check test #5",
|
||||||
|
.raw_types = {
|
||||||
|
/* int */ /* [1] */
|
||||||
|
BTF_TYPE_INT_ENC(0, BTF_INT_SIGNED, 0, 32, sizeof(int)),
|
||||||
|
/* char */ /* [2] */
|
||||||
|
BTF_TYPE_INT_ENC(0, BTF_INT_SIGNED, 0, 8, 1),
|
||||||
|
/* enum E { */ /* [3] */
|
||||||
|
BTF_TYPE_ENC(NAME_TBD, BTF_INFO_ENC(BTF_KIND_ENUM, 0, 2), 1),
|
||||||
|
BTF_ENUM_ENC(NAME_TBD, 0),
|
||||||
|
BTF_ENUM_ENC(NAME_TBD, 1),
|
||||||
|
/* } */
|
||||||
|
/* struct A { */ /* [4] */
|
||||||
|
BTF_TYPE_ENC(NAME_TBD, BTF_INFO_ENC(BTF_KIND_STRUCT, 0, 2), 2),
|
||||||
|
BTF_MEMBER_ENC(NAME_TBD, 2, 0), /* char m; */
|
||||||
|
BTF_MEMBER_ENC(NAME_TBD, 3, 8),/* enum E __attribute__((packed)) n; */
|
||||||
|
/* } */
|
||||||
|
BTF_END_RAW,
|
||||||
|
},
|
||||||
|
.str_sec = "\0E\0E0\0E1\0A\0m\0n",
|
||||||
|
.str_sec_size = sizeof("\0E\0E0\0E1\0A\0m\0n"),
|
||||||
|
.map_type = BPF_MAP_TYPE_ARRAY,
|
||||||
|
.map_name = "size_check5_map",
|
||||||
|
.key_size = sizeof(int),
|
||||||
|
.value_size = 2,
|
||||||
|
.key_type_id = 1,
|
||||||
|
.value_type_id = 4,
|
||||||
|
.max_entries = 4,
|
||||||
|
},
|
||||||
|
|
||||||
/* typedef const void * const_void_ptr;
|
/* typedef const void * const_void_ptr;
|
||||||
* struct A {
|
* struct A {
|
||||||
* const_void_ptr m;
|
* const_void_ptr m;
|
||||||
|
Loading…
Reference in New Issue
Block a user