1# $FreeBSD$ 2 3PROG= ld-elf.so.2 4SRCS= rtld_start.S \ 5 reloc.c rtld.c rtld_lock.c rtld_printf.c map_object.c \ 6 malloc.c xmalloc.c debug.c libmap.c 7MAN= rtld.1 8BINDIR= /libexec 9SYMLINKS= ${BINDIR}/${PROG} /usr/libexec/${PROG} 10WARNS?= 2 11 12# DO NOT USE -static, this is a special case 13.undef NOSHARED 14 15# To activate LD_DEBUG functionality, define ENABLE_DEBUG 16# e.g. make -DENABLE_DEBUG 17 18# for now do not let the use of -flto 19.if ${CFLAGS:M-flto} 20CFLAGS+= -fno-lto 21LDFLAGS+= -flto 22.endif 23 24CFLAGS+= -DIN_RTLD 25CFLAGS+= -I${.CURDIR}/${MACHINE_ARCH} -I${.CURDIR} -D__thread= 26CFLAGS+= -I${.CURDIR}/../../lib/csu/common 27LDFLAGS+= -nostdlib -Wl,-e.rtld_start,--no-undefined 28INSTALLFLAGS= -C -b 29.ifndef NOFSCHG 30INSTALLFLAGS+= -fschg 31.endif 32MLINKS= rtld.1 ld-elf.so.2.1 33MLINKS+= rtld.1 _rtld_functrace.3 34 35.if !defined(NO_SYMVER) 36VERSION_DEF= ${.CURDIR}/../../lib/libc/Versions.def 37SYMBOL_MAPS= ${.CURDIR}/Symbol.map 38VERSION_MAP= Version.map 39LDFLAGS+= -Wl,--version-script=${VERSION_MAP} 40 41rtld.c: ${VERSION_MAP} 42 43.if exists(${.CURDIR}/${MACHINE_ARCH}/Symbol.map) 44SYMBOL_MAPS+= ${.CURDIR}/${MACHINE_ARCH}/Symbol.map 45.endif 46.endif 47 48.if exists(${.CURDIR}/${MACHINE_ARCH}/Makefile.inc) 49.include "${.CURDIR}/${MACHINE_ARCH}/Makefile.inc" 50.endif 51 52CFLAGS+= -fpic -DPIC 53LDFLAGS+= -shared -Wl,-Bsymbolic 54DPADD= ${.OBJDIR}/../../lib/libc_rtld/libc_rtld_pic.a 55LDADD= -L${.OBJDIR}/../../lib/libc_rtld -lc_rtld_pic 56 57.ifdef ENABLE_DEBUG 58CFLAGS+= -DDEBUG 59.endif 60 61# The gcc80 -O2 tends to wrap malloc() + bzero() back to local calloc() by 62# emitting calloc: imul %rsi,%rdi; mov $0x1,%esi; jmpq 0xfoo <calloc> 63FLAGS_GROUPS= calloc 64calloc_FLAGS= -fno-builtin-malloc 65calloc_FLAGS_FILES= malloc.c 66 67# Since moving rtld-elf to /libexec, we need to create a symlink. 68# Fixup the existing binary that's there so we can symlink over it. 69beforeinstall: 70.if exists(${DESTDIR}/usr/libexec/${PROG}) 71 chflags -h noschg ${DESTDIR}/usr/libexec/${PROG} 72.endif 73 74.PATH: ${.CURDIR}/${MACHINE_ARCH} 75 76.include <bsd.symver.mk> 77.include <bsd.prog.mk> 78