1# $FreeBSD$ 2 3PROG= ld-elf.so.1 4SRCS= rtld_start.S rtld.c lockdflt.c map_object.c malloc.c \ 5 xmalloc.c debug.c reloc.c 6MAN= rtld.1 7CFLAGS+= -Wall -DFREEBSD_ELF -I${.CURDIR}/${MACHINE_ARCH} -I${.CURDIR} 8LDFLAGS+= -nostdlib -e .rtld_start 9INSTALLFLAGS= -fschg -C -b 10MLINKS= rtld.1 ld-elf.so.1.1 11 12.if exists(${.CURDIR}/${MACHINE_ARCH}/Makefile.inc) 13.include "${.CURDIR}/${MACHINE_ARCH}/Makefile.inc" 14.endif 15 16# If LDSCRIPT is defined, we build the dynamic linker as an 17# executable. Otherwise we build it as a shared object. We ignore 18# LDSCRIPT if the running kernel is too old to support it. 19.if defined(LDSCRIPT) 20KERN_OSRELDATE!= /sbin/sysctl -n kern.osreldate 2>/dev/null || echo 0 21.if ${KERN_OSRELDATE} >= 400001 22LDSO_IS_EXECUTABLE= yes 23.endif 24.endif 25 26.ifdef LDSO_IS_EXECUTABLE 27OBJS+= dyn_hack.so 28LDFLAGS+= -Wl,-T,${LDSCRIPT} -Wl,-E -Wl,-Bstatic 29DPADD= ${LIBC} 30LDADD= -lc 31.else 32CFLAGS+= -fpic -DPIC 33LDFLAGS+= -shared -Wl,-Bsymbolic 34DPADD= ${LIBC_PIC} 35LDADD= -lc_pic 36.endif 37 38dyn_hack.so: 39 ${CC} -shared -nostdlib -o dyn_hack.so -x c /dev/null 40 41.PATH: ${.CURDIR}/${MACHINE_ARCH} 42 43.include <bsd.prog.mk> 44