| # 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 = -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 -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 -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)/ |