-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
41 lines (30 loc) · 971 Bytes
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
NAME := shadow_pgt
KPATH := /lib/modules/$(shell uname -r)/build
obj-m += shadow_pgt.o
shadow_pgt-objs := src/shadow_pgt_linux.o src/shadow_pgt.o src/shadow_pgt_riscv.o
ccflags-y += -std=gnu99 -O2 -g -fno-omit-frame-pointer -Wno-declaration-after-statement
.PHONY: all
all:
make -C $(KPATH) M=$(CURDIR) modules
.PHONY: clean
clean:
make -C $(KPATH) M=$(CURDIR) clean
rm $(NAME)
.PHONY: unload
unload:
@sudo rmmod $(NAME) &> /dev/null || true
.PHONY: all
load: unload all
# Be at least somewhat prepared for possible kernel death
@sync
@sudo modprobe ./$(NAME).ko
#
# Userspace testing
#
user-srcs := src/shadow_pgt_user.c src/shadow_pgt.c
user-warns := -Wall -Wextra -Wshadow -Wvla -Wpointer-arith -Walloca -Wduplicated-cond \
-Wtrampolines -Wlarger-than=1048576 -Wframe-larger-than=32768 -Wdouble-promotion -Werror=return-type
.PHONY: user
user:
$(CC) -O2 -g -fno-omit-frame-pointer -fsanitize=address $(user-srcs) $(user-warns) -o $(NAME)
./$(NAME)