On Monday, September 16th, 2024 at 9:00 PM, Eduard Zingerman <eddyz87@xxxxxxxxx> wrote: [...] > > When I try this patch, the following happens after first full tests build: > > $ touch progs/verifier_and.c; make -j test_progs > > CLNG-BPF [test_progs] verifier_and.bpf.o > CLNG-BPF [test_progs-no_alu32] verifier_and.bpf.o > CLNG-BPF [test_progs-cpuv4] verifier_and.bpf.o > GEN-SKEL [test_progs] verifier_and.skel.h > GEN-SKEL [test_progs-no_alu32] verifier_and.skel.h > GEN-SKEL [test_progs-cpuv4] verifier_and.skel.h > TEST-OBJ [test_progs] verifier.test.o > BINARY test_progs > > Note that multiple binaries are built. Eduard, I've just tried on master (without this patch) $ touch progs/verifier_and.c; make -j test_progs and I get a similar sequence: CLNG-BPF [test_progs] verifier_and.bpf.o GEN-SKEL [test_progs] verifier_and.skel.h CLNG-BPF [test_progs-cpuv4] verifier_and.bpf.o GEN-SKEL [test_progs-cpuv4] verifier_and.skel.h CLNG-BPF [test_progs-no_alu32] verifier_and.bpf.o GEN-SKEL [test_progs-no_alu32] verifier_and.skel.h TEST-OBJ [test_progs] verifier.test.o BINARY test_progs TEST-OBJ [test_progs-no_alu32] verifier.test.o EXT-COPY [test_progs-no_alu32] urandom_read bpf_testmod.ko bpf_test_no_cfi.ko liburandom_read.so xdp_synproxy sign-file uprobe_multi ima_setup.sh verify_sig_setup.sh btf_dump_test_case_bitfields.c btf_dump_test_case_multidim.c btf_dump_test_case_namespacing.c btf_dump_test_case_ordering.c btf_dump_test_case_packing.c btf_dump_test_case_padding.c btf_dump_test_case_syntax.c BINARY test_progs-no_alu32 TEST-OBJ [test_progs-cpuv4] verifier.test.o EXT-COPY [test_progs-cpuv4] urandom_read bpf_testmod.ko bpf_test_no_cfi.ko liburandom_read.so xdp_synproxy sign-file uprobe_multi ima_setup.sh verify_sig_setup.sh btf_dump_test_case_bitfields.c btf_dump_test_case_multidim.c btf_dump_test_case_namespacing.c btf_dump_test_case_ordering.c btf_dump_test_case_packing.c btf_dump_test_case_padding.c btf_dump_test_case_syntax.c BINARY test_progs-cpuv4 %.bpf.o -> %.skel.h -> %.test.o have to be built for each TRUNNER, right? And then each TRUNNER needs to be rebuilt because of %.test.o change. Using vpath for skels doesn't change this behavior. Maybe I'm missing something, let me know.