mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-09 23:34:42 +08:00
9f93c2e0cd
In case a distribution enables branch protection by default do as we do for the main kernel and explicitly disable branch protection when building the test case for having BTI disabled to ensure it doesn't get turned on by the toolchain defaults. Signed-off-by: Mark Brown <broonie@kernel.org> Link: https://lore.kernel.org/r/20220516182213.727589-1-broonie@kernel.org Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
62 lines
1.9 KiB
Makefile
62 lines
1.9 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
|
|
TEST_GEN_PROGS := btitest nobtitest
|
|
|
|
PROGS := $(patsubst %,gen/%,$(TEST_GEN_PROGS))
|
|
|
|
# These tests are built as freestanding binaries since otherwise BTI
|
|
# support in ld.so is required which is not currently widespread; when
|
|
# it is available it will still be useful to test this separately as the
|
|
# cases for statically linked and dynamically lined binaries are
|
|
# slightly different.
|
|
|
|
CFLAGS_NOBTI = -mbranch-protection=none -DBTI=0
|
|
CFLAGS_BTI = -mbranch-protection=standard -DBTI=1
|
|
|
|
CFLAGS_COMMON = -ffreestanding -Wall -Wextra $(CFLAGS)
|
|
|
|
BTI_CC_COMMAND = $(CC) $(CFLAGS_BTI) $(CFLAGS_COMMON) -c -o $@ $<
|
|
NOBTI_CC_COMMAND = $(CC) $(CFLAGS_NOBTI) $(CFLAGS_COMMON) -c -o $@ $<
|
|
|
|
%-bti.o: %.c
|
|
$(BTI_CC_COMMAND)
|
|
|
|
%-bti.o: %.S
|
|
$(BTI_CC_COMMAND)
|
|
|
|
%-nobti.o: %.c
|
|
$(NOBTI_CC_COMMAND)
|
|
|
|
%-nobti.o: %.S
|
|
$(NOBTI_CC_COMMAND)
|
|
|
|
BTI_OBJS = \
|
|
test-bti.o \
|
|
signal-bti.o \
|
|
start-bti.o \
|
|
syscall-bti.o \
|
|
system-bti.o \
|
|
teststubs-bti.o \
|
|
trampoline-bti.o
|
|
gen/btitest: $(BTI_OBJS)
|
|
$(CC) $(CFLAGS_BTI) $(CFLAGS_COMMON) -nostdlib -static -o $@ $^
|
|
|
|
NOBTI_OBJS = \
|
|
test-nobti.o \
|
|
signal-nobti.o \
|
|
start-nobti.o \
|
|
syscall-nobti.o \
|
|
system-nobti.o \
|
|
teststubs-nobti.o \
|
|
trampoline-nobti.o
|
|
gen/nobtitest: $(NOBTI_OBJS)
|
|
$(CC) $(CFLAGS_BTI) $(CFLAGS_COMMON) -nostdlib -static -o $@ $^
|
|
|
|
# Including KSFT lib.mk here will also mangle the TEST_GEN_PROGS list
|
|
# to account for any OUTPUT target-dirs optionally provided by
|
|
# the toplevel makefile
|
|
include ../../lib.mk
|
|
|
|
$(TEST_GEN_PROGS): $(PROGS)
|
|
cp $(PROGS) $(OUTPUT)/
|