1TESTROOT = ../.. 2include ${TESTROOT}/include/common.makefile 3 4# 5# <rdar://problem/6050482> If pie, ignore preferred load address 6# 7# run a PIE four times and verify libfoo.dylib load address was different every time 8# 9 10FOO_ADDRESS = 0x10000000 11 12ifeq "x86_64" "$(ARCH)" 13 FOO_ADDRESS = 0x300000000 14endif 15 16 17all-check: all check 18 19check: 20 ./main > main.out 21 ./main >> main.out 22 ./main >> main.out 23 ./main >> main.out 24 if [ `sort main.out -u | wc -l` == 4 ]; \ 25 then \ 26 echo "PASS pie-dylib"; \ 27 else \ 28 echo "FAIL pie-dylib"; \ 29 fi; \ 30 31all: main 32 33main : main.c libfoo.dylib 34 ${CC} ${CCFLAGS} -I${TESTROOT}/include -Wl,-pie libfoo.dylib -o main main.c 35 36libfoo.dylib : foo.c 37 ${CC} ${CCFLAGS} foo.c -dynamiclib -o libfoo.dylib -seg1addr ${FOO_ADDRESS} 38 39clean: 40 ${RM} ${RMFLAGS} *~ main main.out libfoo.dylib 41 42