1 # SPDX-License-Identifier: GPL-2.0 2 3 TEST_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 11 CFLAGS_NOBTI = -mbranch-protection=none -DBTI=0 12 CFLAGS_BTI = -mbranch-protection=standard -DBTI=1 13 14 CFLAGS_COMMON = -ffreestanding -Wall -Wextra $(CFLAGS) 15 16 BTI_CC_COMMAND = $(CC) $(CFLAGS_BTI) $(CFLAGS_COMMON) -c -o $@ $< 17 NOBTI_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 31 BTI_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 42 NOBTI_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 56 include ../../lib.mk
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.