-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathMakefile
143 lines (109 loc) · 2.89 KB
/
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#!/usr/bin/env make
# SPDX-License-Identifier: Apache-2.0
# Copyright 2021 Ricerca Security, Inc. All rights reserved.
SHELL:=bash
DEFAULT_BOARD?="Marvell ThunderX2"
CSAL_BASE:=CSAL
CSAL_ARCH:=arm64
ifneq ($(strip $(DEBUG)),)
CSAL_BUILD:=dbg
else
CSAL_BUILD:=rel
endif
CSAL_INC:=$(CSAL_BASE)/include
CSAL_LIB:=$(CSAL_BASE)/lib/$(CSAL_ARCH)/$(CSAL_BUILD)
CSAL_FLAGS:=ARCH=$(CSAL_ARCH) NO_DIAG=1 NO_CHECK=1
LIBCSACCESS:=$(CSAL_LIB)/libcsaccess.a
LIBCSACCUTIL:=$(CSAL_LIB)/libcsacc_util.a
CSDEC_BASE:=coresight-decoder
CSDEC:=$(CSDEC_BASE)/processor
CSDEC_INC:=$(CSDEC_BASE)/include
LIBCSDEC:=$(CSDEC_BASE)/libcsdec.a
UDMABUF_BASE:=udmabuf
UDMABUF_KMOD:=$(UDMABUF_BASE)/u-dma-buf.ko
UDMABUF_BUF_PATH:=/dev/udmabuf0
UDMABUF_BUF_SIZE:=0x80000
INC:=include
HDRS:= \
$(INC)/common.h \
$(INC)/config.h \
$(INC)/known-boards.h \
$(INC)/utils.h \
COMMON_OBJS:= \
src/common.o \
src/config.o \
src/utils.o \
CFLAGS:= \
-std=c11 \
-Wall \
-DDEFAULT_BOARD_NAME=\"$(DEFAULT_BOARD)\" \
-I$(INC) \
-I$(CSAL_INC) \
-I$(CSDEC_INC) \
-lpthread \
-lcapstone \
ifneq ($(strip $(PERF)),)
EXEC_COUNT?=1000
CFLAGS+=-pg -DEXEC_COUNT=$(EXEC_COUNT)
endif
ifneq ($(strip $(DEBUG)),)
CFLAGS+=-g -O0
else
CFLAGS+=-Ofast
endif
CS_PROXY_OBJS:= \
$(COMMON_OBJS) \
src/cs-proxy.o \
CS_PROXY:=cs-proxy
CS_TRACE_OBJS:= \
$(COMMON_OBJS) \
src/cs-trace.o \
CS_TRACE:=cs-trace
CS_TRACE_FLAGS?=
ifneq ($(strip $(DEBUG)),)
CS_TRACE_FLAGS+=--export --verbose=0
endif
TESTS:= \
tests/fib \
DATE:=$(shell date +%Y-%m-%d-%H-%M-%S)
DIR?=trace/$(DATE)
TRACEE?=tests/fib
TRACEE_ARGS?=
all: $(CS_TRACE) $(TESTS)
ifeq ($(shell test -d $(INC)/afl/; echo $$?),0)
all: $(CS_PROXY)
endif
decode: $(CSDEC) trace
$(realpath $(CSDEC)) $(shell cat $(DIR)/decoderargs.txt)
trace: $(CS_TRACE) $(TESTS) | $(UDMABUF_BUF_PATH)
mkdir -p $(DIR) && \
cd $(DIR) && \
sudo $(realpath $(CS_TRACE)) $(CS_TRACE_FLAGS) -- $(realpath $(TRACEE)) $(TRACEE_ARGS)
debug: $(CS_TRACE) $(TESTS) | $(UDMABUF_BUF_PATH)
mkdir -p $(DIR) && \
cd $(DIR) && \
sudo gdb --args $(realpath $(CS_TRACE)) $(CS_TRACE_FLAGS) -- $(realpath $(TRACEE)) $(TRACEE_ARGS)
format:
clang-format -i $(INC)/*.h src/*.c
$(LIBCSDEC):
$(MAKE) -C $(CSDEC_BASE)
$(CSDEC): $(LIBCSDEC)
$(CS_PROXY): $(CS_PROXY_OBJS) $(LIBCSACCESS) $(LIBCSACCUTIL) $(LIBCSDEC)
$(CXX) -o $@ $^ $(CFLAGS)
$(CS_TRACE): $(CS_TRACE_OBJS) $(LIBCSACCESS) $(LIBCSACCUTIL) $(LIBCSDEC)
$(CXX) -o $@ $^ $(CFLAGS)
libcsal:
$(MAKE) -C $(CSAL_BASE) $(CSAL_FLAGS)
$(LIBCSACCESS): libcsal
$(LIBCSACCUTIL): libcsal
$(UDMABUF_KMOD): $(UDMABUF_BASE)
cd $< && \
$(MAKE)
$(UDMABUF_BUF_PATH): | $(UDMABUF_KMOD)
sudo insmod $(UDMABUF_KMOD) $(notdir $@)=$(UDMABUF_BUF_SIZE)
clean:
rm -f $(CS_PROXY_OBJS) $(CS_PROXY) $(CS_TRACE_OBJS) $(CS_TRACE) $(TESTS)
dist-clean: clean
$(MAKE) -C $(CSAL_BASE) clean $(CSAL_FLAGS)
$(MAKE) -C $(CSDEC_BASE) clean
.PHONY: all trace debug decode format libcsal clean dist-clean