forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.8 KiB
61 lines
1.8 KiB
# 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)/
|
|
|