57 lines · plain
1# SPDX-License-Identifier: GPL-2.02 3TEST_GEN_PROGS := btitest nobtitest4 5# These tests are built as freestanding binaries since otherwise BTI6# support in ld.so is required which is not currently widespread; when7# it is available it will still be useful to test this separately as the8# cases for statically linked and dynamically lined binaries are9# slightly different.10 11CFLAGS_NOBTI = -mbranch-protection=none -DBTI=012CFLAGS_BTI = -mbranch-protection=standard -DBTI=113 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: %.c20 $(BTI_CC_COMMAND)21 22$(OUTPUT)/%-bti.o: %.S23 $(BTI_CC_COMMAND)24 25$(OUTPUT)/%-nobti.o: %.c26 $(NOBTI_CC_COMMAND)27 28$(OUTPUT)/%-nobti.o: %.S29 $(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.o39$(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.o50$(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 list54# to account for any OUTPUT target-dirs optionally provided by55# the toplevel makefile56include ../../lib.mk57