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 rtld.1 ld.so.1 12 13# 14# To enable the libmap.conf functionality please 15# add 'WITH_LIBMAP=yes' to /etc/make.conf, recompile 16# and reinstall rtld-elf. 17.ifdef WITH_LIBMAP 18CFLAGS+= -DWITH_LIBMAP 19SRCS+= libmap.c 20.endif 21 22.if exists(${.CURDIR}/${MACHINE_ARCH}/Makefile.inc) 23.include "${.CURDIR}/${MACHINE_ARCH}/Makefile.inc" 24.endif 25 26# If LDSCRIPT is defined, we build the dynamic linker as an 27# executable. Otherwise we build it as a shared object. We ignore 28# LDSCRIPT if the running kernel is too old to support it. 29.if defined(LDSCRIPT) 30KERN_OSRELDATE!= /sbin/sysctl -n kern.osreldate 2>/dev/null || echo 0 31.if ${KERN_OSRELDATE} >= 400001 32LDSO_IS_EXECUTABLE= yes 33.endif 34.endif 35 36.ifdef LDSO_IS_EXECUTABLE 37OBJS+= dyn_hack.so 38LDFLAGS+= -Wl,-T,${LDSCRIPT} -Wl,-E -Wl,-Bstatic 39DPADD= ${LIBC} 40LDADD= -lc 41.else 42CFLAGS+= -fpic -DPIC 43LDFLAGS+= -shared -Wl,-Bsymbolic 44DPADD= ${LIBC_PIC} 45LDADD= -lc_pic 46.endif 47 48dyn_hack.so: 49 ${CC} -shared -nostdlib -o dyn_hack.so -x c /dev/null 50 51.PATH: ${.CURDIR}/${MACHINE_ARCH} 52 53.include <bsd.prog.mk> 54