Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1# SPDX-License-Identifier: GPL-2.0
2
3TEST_GEN_PROGS := btitest nobtitest
4
5# These tests are built as freestanding binaries since otherwise BTI
6# support in ld.so is required which is not currently widespread; when
7# it is available it will still be useful to test this separately as the
8# cases for statically linked and dynamically lined binaries are
9# slightly different.
10
11CFLAGS_NOBTI = -mbranch-protection=none -DBTI=0
12CFLAGS_BTI = -mbranch-protection=standard -DBTI=1
13
14CFLAGS_COMMON = -ffreestanding -Wall -Wextra $(CFLAGS)
15
16BTI_CC_COMMAND = $(CC) $(CFLAGS_BTI) $(CFLAGS_COMMON) -c -o $@ $<
17NOBTI_CC_COMMAND = $(CC) $(CFLAGS_NOBTI) $(CFLAGS_COMMON) -c -o $@ $<
18
19$(OUTPUT)/%-bti.o: %.c
20 $(BTI_CC_COMMAND)
21
22$(OUTPUT)/%-bti.o: %.S
23 $(BTI_CC_COMMAND)
24
25$(OUTPUT)/%-nobti.o: %.c
26 $(NOBTI_CC_COMMAND)
27
28$(OUTPUT)/%-nobti.o: %.S
29 $(NOBTI_CC_COMMAND)
30
31BTI_OBJS = \
32 $(OUTPUT)/test-bti.o \
33 $(OUTPUT)/signal-bti.o \
34 $(OUTPUT)/start-bti.o \
35 $(OUTPUT)/syscall-bti.o \
36 $(OUTPUT)/system-bti.o \
37 $(OUTPUT)/teststubs-bti.o \
38 $(OUTPUT)/trampoline-bti.o
39$(OUTPUT)/btitest: $(BTI_OBJS)
40 $(CC) $(CFLAGS_BTI) $(CFLAGS_COMMON) -nostdlib -static -o $@ $^
41
42NOBTI_OBJS = \
43 $(OUTPUT)/test-nobti.o \
44 $(OUTPUT)/signal-nobti.o \
45 $(OUTPUT)/start-nobti.o \
46 $(OUTPUT)/syscall-nobti.o \
47 $(OUTPUT)/system-nobti.o \
48 $(OUTPUT)/teststubs-nobti.o \
49 $(OUTPUT)/trampoline-nobti.o
50$(OUTPUT)/nobtitest: $(NOBTI_OBJS)
51 $(CC) $(CFLAGS_BTI) $(CFLAGS_COMMON) -nostdlib -static -o $@ $^
52
53# Including KSFT lib.mk here will also mangle the TEST_GEN_PROGS list
54# to account for any OUTPUT target-dirs optionally provided by
55# the toplevel makefile
56include ../../lib.mk