Skip to content

Commit 29dc57d

Browse files
authored
Allow linking to system Zydis (#94)
* Allow linking to system Zydis Choice of compiler optimization and stripping is now left to the packager. * Tell Git to ignore contrib artifacts * Propagate make options to contrib builds
1 parent 840358a commit 29dc57d

File tree

3 files changed

+33
-51
lines changed

3 files changed

+33
-51
lines changed

Diff for: .gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
*.bin
22
*.o
3+
*.a
34
src/e9patch/e9loader_*.c
45
e9patch
56
e9tool

Diff for: Makefile

+30-46
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
.PHONY: all clean install dev release debug sanitize
2+
.SECONDEXPANSION:
3+
14
#########################################################################
25
# BUILD COMMON
36
#########################################################################
@@ -36,35 +39,32 @@ E9TOOL_OBJS=\
3639
src/e9tool/e9tool.o \
3740
src/e9tool/e9types.o \
3841
src/e9tool/e9x86_64.o
39-
E9TOOL_LIBS=\
40-
contrib/zydis/libZydis.a \
41-
contrib/libdw/libdw.a
42-
E9TOOL_CXXFLAGS=\
43-
-I src/e9tool/ -Wno-unused-function \
44-
-I contrib/zydis/include/ \
45-
-I contrib/zydis/dependencies/zycore/include/
46-
E9TOOL_LDFLAGS=\
47-
-Wl,--dynamic-list=src/e9tool/e9tool.syms \
48-
-ldl -lz
42+
43+
E9TOOL_LIBS ::=
44+
E9TOOL_CXXFLAGS ::= -Isrc/e9tool -Wno-unused-function
45+
E9TOOL_LDFLAGS ::= -Wl,--dynamic-list=src/e9tool/e9tool.syms
46+
E9TOOL_LDLIBS ::= -ldl -lz
4947

5048
#########################################################################
5149
# CONVENTIONAL BUILD
5250
#########################################################################
5351

52+
all: CXXFLAGS += -DSYSTEM_LIBDW
53+
all: E9TOOL_LDLIBS += -ldw -lZydis
5454
all: e9tool e9patch
5555

56-
e9tool: CXXFLAGS += -O2 -DSYSTEM_LIBDW $(E9TOOL_CXXFLAGS)
57-
e9tool: contrib/zydis/libZydis.a $(E9TOOL_OBJS)
58-
$(CXX) $(CXXFLAGS) $(E9TOOL_OBJS) contrib/zydis/libZydis.a -o e9tool \
59-
$(E9TOOL_LDFLAGS) -ldw
60-
strip e9tool
56+
e9tool: CXXFLAGS += $(E9TOOL_CXXFLAGS)
57+
e9tool: LDFLAGS += $(E9TOOL_LDFLAGS)
58+
e9tool: LDLIBS += $(E9TOOL_LDLIBS)
59+
e9tool: $(E9TOOL_OBJS) $$(E9TOOL_LIBS)
60+
$(CXX) $(CXXFLAGS) $^ -o $@ $(LDFLAGS) $(LDLIBS)
6161

62-
e9patch: CXXFLAGS += -O2
6362
e9patch: $(E9PATCH_OBJS)
64-
$(CXX) $(CXXFLAGS) $(E9PATCH_OBJS) -o e9patch
65-
strip e9patch
63+
$(CXX) $(CXXFLAGS) $^ -o $@ $(LDFLAGS) $(LDLIBS)
6664

6765
clean:
66+
$(MAKE) -C contrib/libdw clean
67+
$(MAKE) -C contrib/zydis clean
6868
rm -rf $(E9PATCH_OBJS) $(E9TOOL_OBJS) e9patch e9tool \
6969
src/e9patch/e9loader_*.c e9loader_*.o e9loader_*.bin
7070

@@ -84,10 +84,10 @@ src/e9patch/e9elf.o: src/e9patch/e9loader_elf.c
8484
src/e9patch/e9pe.o: src/e9patch/e9loader_pe.c
8585

8686
contrib/zydis/libZydis.a:
87-
(cd contrib/zydis/; make)
87+
$(MAKE) -C contrib/zydis
8888

8989
contrib/libdw/libdw.a:
90-
(cd contrib/libdw/; make)
90+
$(MAKE) -C contrib/libdw
9191

9292
install: all
9393
install -d "$(DESTDIR)$(PREFIX)/bin"
@@ -151,33 +151,17 @@ install: all
151151
# SPECIAL BUILD
152152
#########################################################################
153153

154-
release: CXXFLAGS += -O2 -D NDEBUG
155-
release: $(E9PATCH_OBJS)
156-
$(CXX) $(CXXFLAGS) $(E9PATCH_OBJS) -o e9patch
157-
strip e9patch
154+
dev: E9TOOL_CXXFLAGS += -Icontrib/libdw \
155+
-Icontrib/zydis/include -Icontrib/zydis/dependencies/zycore/include
156+
dev: E9TOOL_LIBS += contrib/zydis/libZydis.a contrib/libdw/libdw.a
157+
dev: e9patch e9tool
158+
159+
release: CXXFLAGS += -O2 -DNDEBUG
160+
release: dev
161+
strip e9patch e9tool
158162

159163
debug: CXXFLAGS += -O0 -g
160-
debug: $(E9PATCH_OBJS)
161-
$(CXX) $(CXXFLAGS) $(E9PATCH_OBJS) -o e9patch
164+
debug: dev
162165

163166
sanitize: CXXFLAGS += -O0 -g -fsanitize=address
164-
sanitize: $(E9PATCH_OBJS)
165-
$(CXX) $(CXXFLAGS) $(E9PATCH_OBJS) -o e9patch
166-
167-
tool: CXXFLAGS += -O2 $(E9TOOL_CXXFLAGS) -I contrib/libdw/
168-
tool: $(E9TOOL_OBJS) $(E9TOOL_LIBS)
169-
$(CXX) $(CXXFLAGS) $(E9TOOL_OBJS) $(E9TOOL_LIBS) -o e9tool \
170-
$(E9TOOL_LDFLAGS)
171-
strip e9tool
172-
173-
tool.debug: CXXFLAGS += -O0 -g $(E9TOOL_CXXFLAGS) -I contrib/libdw/
174-
tool.debug: $(E9TOOL_OBJS) $(E9TOOL_LIBS)
175-
$(CXX) $(CXXFLAGS) $(E9TOOL_OBJS) $(E9TOOL_LIBS) -o e9tool \
176-
$(E9TOOL_LDFLAGS)
177-
178-
tool.sanitize: CXXFLAGS += -O0 -g -fsanitize=address $(E9TOOL_CXXFLAGS) \
179-
-I contrib/libdw/
180-
tool.sanitize: $(E9TOOL_OBJS) $(E9TOOL_LIBS)
181-
$(CXX) $(CXXFLAGS) $(E9TOOL_OBJS) $(E9TOOL_LIBS) -o e9tool \
182-
$(E9TOOL_LDFLAGS)
183-
167+
sanitize: dev

Diff for: build.sh

+2-5
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#!/bin/bash
1+
#!/bin/sh
22
#
33
# Copyright (C) National University of Singapore
44
#
@@ -31,10 +31,7 @@ else
3131
fi
3232

3333
echo -e "${GREEN}$0${OFF}: building e9patch and e9tool..."
34-
(cd contrib/libdw; make clean; make -j `nproc`)
35-
(cd contrib/zydis; make clean; make -j `nproc`)
3634
make clean
37-
make -j `nproc` tool release
35+
make -j$(nproc) release
3836

3937
echo -e "${GREEN}$0${OFF}: done...!"
40-

0 commit comments

Comments
 (0)