On Thu, Mar 05, 2020 at 09:41:34AM -0700, Shuah Khan wrote:
On 3/4/20 7:20 PM, Kees Cook wrote:
Instead of the TEST_CUSTOM_PROGS+all dance, you can just add an explicit dependency, with the final seccomp/Makefile looking like this:
# SPDX-License-Identifier: GPL-2.0 CFLAGS += -Wl,-no-as-needed -Wall LDFLAGS += -lpthread
TEST_GEN_PROGS := seccomp_bpf seccomp_benchmark
TEST_CUSTOM_PROGS is for differentiating test programs that can't use lib.mk generic rules. It is appropriate to use for seccomp_bpf
I don't follow? This suggested Makefile works for me (i.e. it can use the lib.mk generic rules since CFLAGS and LDFLAGS can be customized first, and it just adds an additional dependency).
include ../lib.mk
# Additional dependencies $(OUTPUT)/seccomp_bpf: ../kselftest_harness.h
BTW, I see a lot of other targets that use kselftest_harness.h appear to be missing this Makefile dependency, but that's a different problem. :)
(Though this fails in the same way as above when run from the top-level directory.)
I didn't see this because I have been the same directory I used for relocated cross-build kernel. :(
Thanks for testing this. I know the problem here. all is a dependency for install step and $(OUTPUT) is referencing the objdir before it gets created. It is a Makefile/lib.mk problem to fix.
I will do a separate patch for this. This will show up in any test that is using $(OUTPUT) to relocate objects mainly the ones that require custom build rule like seeccomp.
Okay, cool. It looked to me like it lost track of the top level source directory (i.e. "make: entering $output" ... "can't find ../other/files")
Anyway, I look forward to the next version and I'll get it tested. :) Thanks for fixing this! I really like having a top-level "make" command that can extract a single selftest; that's very handy!