On Tue, Nov 9, 2021 at 5:48 PM Alexei Starovoitov <alexei.starovoitov@xxxxxxxxx> wrote: > > On Wed, Nov 3, 2021 at 3:09 PM Andrii Nakryiko <andrii@xxxxxxxxxx> wrote: > > > > Move testing prog and object load wrappers (bpf_prog_test_load and > > bpf_test_load_program) into testing_helpers.{c,h} and get rid of > > otherwise useless test_stub.c. Make testing_helpers.c available to > > non-test_progs binaries as well. > > > > Signed-off-by: Andrii Nakryiko <andrii@xxxxxxxxxx> > ... > > -int extra_prog_load_log_flags = 0; > > - > > -int bpf_prog_test_load(const char *file, enum bpf_prog_type type, > > - struct bpf_object **pobj, int *prog_fd) > > -{ > > - struct bpf_prog_load_attr attr; > > - > > - memset(&attr, 0, sizeof(struct bpf_prog_load_attr)); > > - attr.file = file; > > - attr.prog_type = type; > > - attr.expected_attach_type = 0; > > - attr.prog_flags = BPF_F_TEST_RND_HI32; > > - attr.log_level = extra_prog_load_log_flags; > > - > > - return bpf_prog_load_xattr(&attr, pobj, prog_fd); > > -} > > > +int extra_prog_load_log_flags = 0; > > + > > +int bpf_prog_test_load(const char *file, enum bpf_prog_type type, > > + struct bpf_object **pobj, int *prog_fd) > > +{ > > + struct bpf_object *obj; > > + struct bpf_program *prog; > > + int err; > > + > > + obj = bpf_object__open(file); > > + if (!obj) > > + return -errno; > > + > > + prog = bpf_object__next_program(obj, NULL); > > + if (!prog) { > > + err = -ENOENT; > > + goto err_out; > > + } > > + > > + if (type != BPF_PROG_TYPE_UNSPEC) > > + bpf_program__set_type(prog, type); > > + > > + err = bpf_object__load(obj); > > + if (err) > > + goto err_out; > > + > > + *pobj = obj; > > + *prog_fd = bpf_program__fd(prog); > > + > > + return 0; > > +err_out: > > + bpf_object__close(obj); > > + return err; > > +} > > Andrii, > That part of the commit broke verbose output in the test. > -v and -vv no longer work for tests that use bpf_prog_test_load() > because extra_prog_load_log_flags are ignored. > > Please fix. Ah, right, sorry, I should have used bpf_object__load_xattr() and passed those extra_prog_load_log_flags to it. I'll fix it. How important are BPF_F_TEST_RND_HI32 flags, btw? We need a bpf_program__set_extra_flags() to be able to set them, I'll add that as well. "extra" because they will be |'d with whatever the flags are determined by SEC_DEF().