From: Yonghong Song <yhs@fb.com>
To: Andrii Nakryiko <andrii.nakryiko@gmail.com>
Cc: bpf <bpf@vger.kernel.org>, Alexei Starovoitov <ast@kernel.org>,
Andrii Nakryiko <andrii@kernel.org>,
Daniel Borkmann <daniel@iogearbox.net>,
Kernel Team <kernel-team@fb.com>
Subject: Re: [PATCH bpf-next v2 13/18] selftests/bpf: Test new enum kflag and enum64 API functions
Date: Wed, 18 May 2022 14:12:24 -0700 [thread overview]
Message-ID: <a8881bb3-54d0-2a3f-85be-1962316ad231@fb.com> (raw)
In-Reply-To: <CAEf4BzY5_-vc6+t0bfZ0y_0Rsi9Og9fa6EtSuQ=OyGYFFQvHwA@mail.gmail.com>
On 5/17/22 4:40 PM, Andrii Nakryiko wrote:
> On Fri, May 13, 2022 at 8:13 PM Yonghong Song <yhs@fb.com> wrote:
>>
>> Add tests to use the new enum kflag and enum64 API functions
>> in selftest btf_write.
>>
>> Signed-off-by: Yonghong Song <yhs@fb.com>
>> ---
>> tools/testing/selftests/bpf/btf_helpers.c | 21 +++-
>> .../selftests/bpf/prog_tests/btf_write.c | 114 +++++++++++++-----
>> 2 files changed, 105 insertions(+), 30 deletions(-)
>
> [...]
>
>> @@ -307,6 +308,48 @@ static void gen_btf(struct btf *btf)
>> ASSERT_EQ(t->type, 1, "tag_type");
>> ASSERT_STREQ(btf_type_raw_dump(btf, 20),
>> "[20] TYPE_TAG 'tag1' type_id=1", "raw_dump");
>> +
>> + /* ENUM64 */
>> + id = btf__add_enum64(btf, "e1", 8, true);
>> + ASSERT_EQ(id, 21, "enum64_id");
>> + err = btf__add_enum64_value(btf, "v1", -1);
>> + ASSERT_OK(err, "v1_res");
>> + err = btf__add_enum64_value(btf, "v2", 0x123456789); /* 4886718345 */
>> + ASSERT_OK(err, "v2_res");
>> + t = btf__type_by_id(btf, 21);
>> + ASSERT_STREQ(btf__str_by_offset(btf, t->name_off), "e1", "enum64_name");
>> + ASSERT_EQ(btf_kind(t), BTF_KIND_ENUM64, "enum64_kind");
>> + ASSERT_EQ(btf_vlen(t), 2, "enum64_vlen");
>> + ASSERT_EQ(t->size, 8, "enum64_sz");
>> + v64 = btf_enum64(t) + 0;
>> + ASSERT_STREQ(btf__str_by_offset(btf, v64->name_off), "v1", "v1_name");
>> + ASSERT_EQ(v64->val_hi32, 0xffffffff, "v1_val");
>> + ASSERT_EQ(v64->val_lo32, 0xffffffff, "v1_val");
>> + v64 = btf_enum64(t) + 1;
>> + ASSERT_STREQ(btf__str_by_offset(btf, v64->name_off), "v2", "v2_name");
>> + ASSERT_EQ(v64->val_hi32, 0x1, "v2_val");
>> + ASSERT_EQ(v64->val_lo32, 0x23456789, "v2_val");
>> + ASSERT_STREQ(btf_type_raw_dump(btf, 21),
>> + "[21] ENUM64 'e1' size=8 vlen=2\n"
>
> we should emit and validate kflag for enum/enum64. Or maybe
> "encoding=SIGNED|UNSIGNED" to match INT's output, not sure which one
> is best, but we probably want to make sure that kflag is reflected in
> bpftool and selftests output, right?
My intention is the value print out itself will show it is signed or
unsigned as below. But it doesn't hurt to explicit print out kflag as
well. Will do.
>
>> + "\t'v1' val=-1\n"
>> + "\t'v2' val=4886718345", "raw_dump");
>> +
>> + id = btf__add_enum64(btf, "e1", 8, false);
>> + ASSERT_EQ(id, 22, "enum64_id");
>> + err = btf__add_enum64_value(btf, "v1", 0xffffffffFFFFFFFF); /* 18446744073709551615 */
>> + ASSERT_OK(err, "v1_res");
>> + t = btf__type_by_id(btf, 22);
>> + ASSERT_STREQ(btf__str_by_offset(btf, t->name_off), "e1", "enum64_name");
>> + ASSERT_EQ(btf_kind(t), BTF_KIND_ENUM64, "enum64_kind");
>> + ASSERT_EQ(btf_vlen(t), 1, "enum64_vlen");
>> + ASSERT_EQ(t->size, 8, "enum64_sz");
>> + v64 = btf_enum64(t) + 0;
>> + ASSERT_STREQ(btf__str_by_offset(btf, v64->name_off), "v1", "v1_name");
>> + ASSERT_EQ(v64->val_hi32, 0xffffffff, "v1_val");
>> + ASSERT_EQ(v64->val_lo32, 0xffffffff, "v1_val");
>> + ASSERT_STREQ(btf_type_raw_dump(btf, 22),
>> + "[22] ENUM64 'e1' size=8 vlen=1\n"
>> + "\t'v1' val=18446744073709551615", "raw_dump");
>> }
>>
>> static void test_btf_add()
>
> [...]
next prev parent reply other threads:[~2022-05-18 21:12 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-14 3:12 [PATCH bpf-next v2 00/18] bpf: Add 64bit enum value support Yonghong Song
2022-05-14 3:12 ` [PATCH bpf-next v2 01/18] bpf: Add btf enum64 support Yonghong Song
2022-05-17 0:06 ` Andrii Nakryiko
2022-05-14 3:12 ` [PATCH bpf-next v2 02/18] libbpf: Permit 64bit relocation value Yonghong Song
2022-05-17 0:08 ` Andrii Nakryiko
2022-05-14 3:12 ` [PATCH bpf-next v2 03/18] libbpf: Fix an error in 64bit relocation value computation Yonghong Song
2022-05-17 0:10 ` Andrii Nakryiko
2022-05-14 3:12 ` [PATCH bpf-next v2 04/18] libbpf: Refactor btf__add_enum() for future code sharing Yonghong Song
2022-05-17 0:15 ` Andrii Nakryiko
2022-05-14 3:12 ` [PATCH bpf-next v2 05/18] libbpf: Add enum64 parsing and new enum64 public API Yonghong Song
2022-05-17 0:15 ` Andrii Nakryiko
2022-05-14 3:12 ` [PATCH bpf-next v2 06/18] libbpf: Add enum64 deduplication support Yonghong Song
2022-05-17 0:28 ` Andrii Nakryiko
2022-05-17 17:11 ` Yonghong Song
2022-05-17 22:22 ` Andrii Nakryiko
2022-05-14 3:12 ` [PATCH bpf-next v2 07/18] libbpf: Add enum64 support for btf_dump Yonghong Song
2022-05-17 0:37 ` Andrii Nakryiko
2022-05-17 17:15 ` Yonghong Song
2022-05-14 3:13 ` [PATCH bpf-next v2 08/18] libbpf: Add enum64 sanitization Yonghong Song
2022-05-17 23:25 ` Andrii Nakryiko
2022-05-18 21:08 ` Yonghong Song
2022-05-14 3:13 ` [PATCH bpf-next v2 09/18] libbpf: Add enum64 support for bpf linking Yonghong Song
2022-05-17 23:25 ` Andrii Nakryiko
2022-05-14 3:13 ` [PATCH bpf-next v2 10/18] libbpf: Add enum64 relocation support Yonghong Song
2022-05-17 23:32 ` Andrii Nakryiko
2022-05-18 21:09 ` Yonghong Song
2022-05-14 3:13 ` [PATCH bpf-next v2 11/18] bpftool: Add btf enum64 support Yonghong Song
2022-05-17 23:38 ` Andrii Nakryiko
2022-05-18 21:10 ` Yonghong Song
2022-05-14 3:13 ` [PATCH bpf-next v2 12/18] selftests/bpf: Fix selftests failure Yonghong Song
2022-05-17 23:33 ` Andrii Nakryiko
2022-05-14 3:13 ` [PATCH bpf-next v2 13/18] selftests/bpf: Test new enum kflag and enum64 API functions Yonghong Song
2022-05-17 23:40 ` Andrii Nakryiko
2022-05-18 21:12 ` Yonghong Song [this message]
2022-05-14 3:13 ` [PATCH bpf-next v2 14/18] selftests/bpf: Add BTF_KIND_ENUM64 unit tests Yonghong Song
2022-05-17 23:41 ` Andrii Nakryiko
2022-05-14 3:13 ` [PATCH bpf-next v2 15/18] selftests/bpf: Test BTF_KIND_ENUM64 for deduplication Yonghong Song
2022-05-17 23:43 ` Andrii Nakryiko
2022-05-14 3:13 ` [PATCH bpf-next v2 16/18] selftests/bpf: Add a test for enum64 value relocations Yonghong Song
2022-05-17 23:45 ` Andrii Nakryiko
2022-05-14 3:13 ` [PATCH bpf-next v2 17/18] selftests/bpf: Clarify llvm dependency with possible selftest failures Yonghong Song
2022-05-17 23:45 ` Andrii Nakryiko
2022-05-14 3:13 ` [PATCH bpf-next v2 18/18] docs/bpf: Update documentation for BTF_KIND_ENUM64 support Yonghong Song
2022-05-17 23:47 ` Andrii Nakryiko
2022-05-18 21:21 ` Yonghong Song
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=a8881bb3-54d0-2a3f-85be-1962316ad231@fb.com \
--to=yhs@fb.com \
--cc=andrii.nakryiko@gmail.com \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=kernel-team@fb.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox