Re: [PATCH bpf-next v4 3/3] selftests/bpf: Switches existing selftests to using open_opts for custom BTF
From: Shuyi Cheng <hidden>
Date: 2021-07-17 01:40:25
Also in:
bpf, kernel-janitors, lkml
On 7/17/21 4:27 AM, Andrii Nakryiko wrote:
On Tue, Jul 13, 2021 at 5:43 AM Shuyi Cheng [off-list ref] wrote:quoted
This patch mainly replaces the bpf_object_load_attr of the core_autosize.c and core_reloc.c files with bpf_object_open_opts. Signed-off-by: Shuyi Cheng <redacted> --- .../selftests/bpf/prog_tests/core_autosize.c | 22 ++++++++--------- .../testing/selftests/bpf/prog_tests/core_reloc.c | 28 ++++++++++------------ 2 files changed, 24 insertions(+), 26 deletions(-)So I applied this, but it's obvious you haven't bothered even *building* selftests, because it had at least one compilation warning and one compilation *error*, not building test_progs at all. I've noted stuff I fixed (and still remember) below. I understand it might be your first kernel contribution, but it's not acceptable to submit patches that don't build. Next time please be more thorough.
I'm very sorry, it was my fault. Although I learned a lot from libbpf, there is still a lot to learn and improve. Thank you very much for your advice and the very powerful libbpf. regards, Shuyi
[...]quoted
- load_attr.obj = skel->obj; - load_attr.target_btf_path = btf_file; - err = bpf_object__load_xattr(&load_attr); + err = bpf_object__load(skel);This didn't compile outright, because it should have been test_core_autosize__load(skel).quoted
if (!ASSERT_ERR(err, "bad_prog_load")) goto cleanup;diff --git a/tools/testing/selftests/bpf/prog_tests/core_reloc.c b/tools/testing/selftests/bpf/prog_tests/core_reloc.c index d02e064..10eb2407 100644 --- a/tools/testing/selftests/bpf/prog_tests/core_reloc.c +++ b/tools/testing/selftests/bpf/prog_tests/core_reloc.c@@ -816,7 +816,7 @@ static size_t roundup_page(size_t sz) void test_core_reloc(void) { const size_t mmap_sz = roundup_page(sizeof(struct data)); - struct bpf_object_load_attr load_attr = {}; + struct bpf_object_open_opts open_opts = {}; struct core_reloc_test_case *test_case; const char *tp_name, *probe_name; int err, i, equal;@@ -846,9 +846,17 @@ void test_core_reloc(void) continue; } - obj = bpf_object__open_file(test_case->bpf_obj_file, NULL); + if (test_case->btf_src_file) { + err = access(test_case->btf_src_file, R_OK); + if (!ASSERT_OK(err, "btf_src_file")) + goto cleanup; + } + + open_opts.btf_custom_path = test_case->btf_src_file;This was reporting a valid warning about dropping const modifier. For good reason, becyase btf_custom_path in open_opts should have been `const char *`, I fixed that.quoted
+ open_opts.sz = sizeof(struct bpf_object_open_opts); + obj = bpf_object__open_file(test_case->bpf_obj_file, &open_opts); if (!ASSERT_OK_PTR(obj, "obj_open")) - continue; + goto cleanup; probe_name = "raw_tracepoint/sys_enter"; tp_name = "sys_enter";[...]