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 57