aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile25
1 files changed, 9 insertions, 16 deletions
diff --git a/Makefile b/Makefile
index 0c88a9d..d77410c 100644
--- a/Makefile
+++ b/Makefile
@@ -5,7 +5,7 @@ ARCH := -arch x86_64
XCFLAGS := -O3 -Wall -Wextra -Werror -Ilib $(ARCH)
override CC := $(CC) $(XCFLAGS) $(CFLAGS)
override CXX := $(CXX) $(XCFLAGS) $(CFLAGS) -fno-exceptions -fno-asynchronous-unwind-tables
-LIB_LDFLAGS := -lobjc -dynamiclib -fvisibility=hidden -install_name /usr/lib/libsubstitute.dylib
+LIB_LDFLAGS := -lobjc -dynamiclib -fvisibility=hidden -install_name /usr/lib/libsubstitute.dylib -dead_strip
IMAON2 := /Users/comex/c/imaon2
GEN_JS := node --harmony --harmony_arrow_functions $(IMAON2)/tables/gen.js
@@ -30,6 +30,8 @@ $(eval $(call do_prefix,arm64,,AArch64))
out/%.o: lib/%.c Makefile $(HEADERS)
@mkdir -p $(dir $@)
$(CC) -fvisibility=hidden -std=c11 -c -o $@ $<
+out/%.o: generated/%.S Makefile $(HEADERS)
+ $(CC) -fvisibility=hidden -c -o $@ $<
out/%.o: lib/%.S Makefile $(HEADERS)
@mkdir -p $(dir $@)
$(CC) -fvisibility=hidden -c -o $@ $<
@@ -39,14 +41,14 @@ out/transform-dis.o: $(GENERATED)
LIB_OBJS := \
out/darwin/find-syms.o \
out/darwin/inject.o \
- out/darwin/inject-asm.o \
out/darwin/interpose.o \
out/darwin/objc-asm.o \
out/darwin/objc.o \
out/darwin/read.o \
out/darwin/substrate-compat.o \
out/jump-dis.o \
- out/transform-dis.o
+ out/transform-dis.o \
+ out/darwin-inject-asm.o
out/libsubstitute.dylib: $(LIB_OBJS)
$(CC) -o $@ $(LIB_OBJS) $(LIB_LDFLAGS)
@@ -66,22 +68,13 @@ out/inject-asm-raw-arm.o: lib/darwin/inject-asm-raw.c Makefile
out/inject-asm-raw-arm64.o: lib/darwin/inject-asm-raw.c Makefile
$(IACLANG) -arch arm64 -o $@ $<
IAR_BINS := out/inject-asm-raw-x86_64.bin out/inject-asm-raw-i386.bin out/inject-asm-raw-arm.bin out/inject-asm-raw-arm64.bin
-out/inject-asm.S: $(IAR_BINS) Makefile
- (echo ".align 12"; \
- echo ".globl _inject_page_start"; \
- echo "_inject_page_start:"; \
- for i in x86_64 i386 arm arm64; do \
- echo ".align 2"; \
- echo ".globl _inject_start_$$i"; \
- echo "_inject_start_$$i:"; \
- printf ".byte "; \
- xxd -i < out/inject-asm-raw-$$i.bin | xargs echo; \
- done) > $@ || rm -f $@
+out/inject-asm.S: $(IAR_BINS) Makefile script/gen-inject-asm.sh
+ ./script/gen-inject-asm.sh > $@ || rm -f $@
define define_test
out/test-$(1): test/test-$(2).[cm]* $(HEADERS) $(GENERATED) Makefile out/libsubstitute.dylib
$(3) -g -o $$@ $$< -Ilib -Isubstrate -Lout -lsubstitute
- ldid -Sent.plist $$@
+ lipo -info $$@ | grep -q arm && ldid -Sent.plist $$@ || true
install_name_tool -change /usr/lib/libsubstitute.dylib '@executable_path/libsubstitute.dylib' $$@
all: out/test-$(1)
endef
@@ -101,7 +94,7 @@ $(eval $(call define_test,substrate,substrate,$(CXX) -std=c++98))
$(eval $(call define_test,imp-forwarding,imp-forwarding,$(CC) -std=c11 -framework Foundation -lobjc))
$(eval $(call define_test,objc-hook,objc-hook,$(CC) -std=c11 -framework Foundation -lsubstitute))
$(eval $(call define_test,interpose,interpose,$(CC) -std=c11 -lsubstitute))
-$(eval $(call define_test,inject,inject,$(CC) -std=c11 -lsubstitute))
+$(eval $(call define_test,inject,inject,$(CC) -std=c11 -lsubstitute out/darwin/inject.o out/darwin/read.o))
out/insns-arm.o: test/insns-arm.S Makefile
clang -arch armv7 -c -o $@ $<