diff options
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 25 |
1 files changed, 9 insertions, 16 deletions
@@ -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 $@ $< |