TESTROOT = ../..
include ${TESTROOT}/include/common.makefile
SHELL = bash
NO_PIC =
STATIC =
RELOC_FAIL = ${FAIL_IF_SUCCESS}
LRELOCS_NEEDED = ${FAIL_IF_EMPTY}
XRELOCS_NEEDED = ${FAIL_IF_EMPTY}
ifeq (${ARCH},i386)
NO_PIC = -mdynamic-no-pic
STATIC = -static
endif
ifeq (${ARCH},ppc)
NO_PIC = -mdynamic-no-pic
STATIC = -mdynamic-no-pic
XRELOCS_NEEDED = ${FAIL_IF_STDIN}
LRELOCS_NEEDED = ${FAIL_IF_EMPTY}
endif
ifeq (${ARCH},x86_64)
RELOC_FAIL =
XRELOCS_NEEDED = ${FAIL_IF_STDIN}
LRELOCS_NEEDED = ${FAIL_IF_STDIN}
endif
ifeq (${FILEARCH},arm)
NO_PIC = -mdynamic-no-pic
STATIC = -static
endif
all:
${CC} ${CCFLAGS} foo.c -dynamiclib -o libfoo.dylib
${CC} ${CCFLAGS} test_rebase.c -c ${NO_PIC}
${RELOC_FAIL} ${CC} ${CCFLAGS} test_rebase.o libfoo.dylib -dynamiclib -o libtestrebase.dylib -read_only_relocs error 2>/dev/null
${CC} ${CCFLAGS} test_bind.c -c ${NO_PIC}
${RELOC_FAIL} ${CC} ${CCFLAGS} test_bind.o libfoo.dylib -dynamiclib -o libtestbind.dylib -read_only_relocs error 2>/dev/null
${CC} ${CCFLAGS} test_rebase.c -c ${NO_PIC}
${CC} ${CCFLAGS} test_bind.c -c ${NO_PIC}
${CC} ${CCFLAGS} test_rebase.o test_bind.o libfoo.dylib -dynamiclib -o libtest-no-pic.dylib -read_only_relocs suppress -Wl,-w
${CC} ${CCFLAGS} test_rebase.c -c ${STATIC}
${CC} ${CCFLAGS} test_bind.c -c ${STATIC}
${CC} ${CCFLAGS} test_rebase.o test_bind.o libfoo.dylib -dynamiclib -o libtest-static.dylib -read_only_relocs suppress -Wl,-w
otool -lv libtest-static.dylib | grep -A9 "sectname __text" | grep attributes | grep EXT_RELOC | ${XRELOCS_NEEDED}
otool -lv libtest-static.dylib | grep -A9 "sectname __text" | grep attributes | grep LOC_RELOC | ${LRELOCS_NEEDED}
${CC} ${CCFLAGS} main.c -c ${STATIC}
${CC} ${CCFLAGS} main.o libfoo.dylib -o main -read_only_relocs suppress -Wl,-w
${PASS_IFF_GOOD_MACHO} main
clean:
rm -rf test_bind.o test_rebase.o libfoo.dylib libtestrebase.dylib libtestbind.dylib libtest-no-pic.dylib libtest-static.dylib main.o main