mirror of
https://github.com/torvalds/linux.git
synced 2026-10-24 16:55:02 +02:00
objtool: Forward toolchain variables to the klp test runner
The tests target already passes ARCH and CROSS_COMPILE into
run-tests.sh. lib.sh uses those to pick a default compiler and
binutils:
CC=${CC:-${CROSS_COMPILE}gcc}
LD=${LD:-${CROSS_COMPILE}ld}
READELF=${READELF:-${CROSS_COMPILE}readelf}
OBJCOPY=${OBJCOPY:-${CROSS_COMPILE}objcopy}
Those defaults only apply when the variables reach the shell that sources
lib.sh. The recipe passed OBJTOOL, ARCH and CROSS_COMPILE explicitly, but
not CC or the binutils. Makefile-assigned values (e.g. from LLVM=1) are
not visible in the recipe environment unless forwarded:
$ LLVM=1 make -C tools/objtool tests
...
# preflight
# compiler gcc (GCC) ...
Pass CC, LD, READELF and OBJCOPY the same way as ARCH and CROSS_COMPILE,
so fixtures are built and inspected with the toolchain make selected:
$ LLVM=1 make -C tools/objtool tests
...
# preflight
# compiler clang version 21.1.8 ...
Signed-off-by: Joe Lawrence <joe.lawrence@redhat.com>
Signed-off-by: Song Liu <song@kernel.org>
Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Assisted-by: Claude:claude-opus-5
Link: https://patch.msgid.link/20260916184351.2720310-12-song@kernel.org
This commit is contained in:
parent
9b11acaad1
commit
913bf39ff4
|
|
@ -243,7 +243,17 @@ setting a cross compiler cannot produce one the host is unable to run. ARCH
|
|||
selects both the objtool target and the directory of tests to run.
|
||||
|
||||
clang needs telling, since it defaults to the host triple however it is
|
||||
invoked. The fixtures include no kernel headers, so no sysroot is needed:
|
||||
invoked. LLVM=1 with CROSS_COMPILE does that for you -- the --target= it
|
||||
derives is forwarded to the tests -- and the fixtures include no kernel
|
||||
headers, so no sysroot is needed:
|
||||
|
||||
::
|
||||
|
||||
ARCH=x86_64 CROSS_COMPILE=x86_64-linux-gnu- LLVM=1 \
|
||||
make -C tools/objtool tests
|
||||
|
||||
Naming the compiler by hand works too, and is what to reach for when the
|
||||
target triple is not the one CROSS_COMPILE implies:
|
||||
|
||||
::
|
||||
|
||||
|
|
|
|||
|
|
@ -153,8 +153,17 @@ clean: $(LIBSUBCMD)-clean
|
|||
mrproper: clean
|
||||
$(call QUIET_CLEAN, objtool) $(RM) $(OBJTOOL)
|
||||
|
||||
# The kernel's own Makefile sets OBJCOPY, to llvm-objcopy under LLVM and to
|
||||
# $(CROSS_COMPILE)objcopy otherwise; tools/scripts/Makefile.include names only
|
||||
# LLVM_OBJCOPY and leaves OBJCOPY unset. Forwarding it unset would hand the
|
||||
# tests an empty string, and they would fall back to GNU objcopy even when
|
||||
# asked for an LLVM toolchain.
|
||||
OBJCOPY ?= $(if $(LLVM),$(LLVM_OBJCOPY),$(CROSS_COMPILE)objcopy)
|
||||
|
||||
tests: $(OBJTOOL)
|
||||
$(Q)OBJTOOL=$(abspath $(OBJTOOL)) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) \
|
||||
CC='$(CC) $(CLANG_CROSS_FLAGS)' LD='$(LD)' \
|
||||
READELF='$(READELF)' OBJCOPY='$(OBJCOPY)' \
|
||||
KEEP=$(KEEP) $(srctree)/tools/objtool/tests/run-tests.sh
|
||||
|
||||
FORCE:
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user