1abfcd5b1SJohn Marino# $FreeBSD$ 2984263bcSMatthew Dillon 3a1eee96aSMatthew DillonPROG= ld-elf.so.2 4abfcd5b1SJohn MarinoSRCS= rtld_start.S \ 5abfcd5b1SJohn Marino reloc.c rtld.c rtld_lock.c rtld_printf.c map_object.c \ 6abfcd5b1SJohn Marino malloc.c xmalloc.c debug.c libmap.c 7984263bcSMatthew DillonMAN= rtld.1 816dbe6a9SFrançois TigeotBINDIR= /libexec 916dbe6a9SFrançois TigeotSYMLINKS= ${BINDIR}/${PROG} /usr/libexec/${PROG} 108f5c3d2aSSascha WildnerWARNS?= 2 118f5c3d2aSSascha Wildner 12e77c6f6aSzrj# DO NOT USE -static, this is a special case 13e77c6f6aSzrj.undef NOSHARED 14e77c6f6aSzrj 15fcf53d9bSJohn Marino# To activate LD_DEBUG functionality, define ENABLE_DEBUG 16fcf53d9bSJohn Marino# e.g. make -DENABLE_DEBUG 17fcf53d9bSJohn Marino 18697e5645Szrj# for now do not let the use of -flto 19697e5645Szrj.if ${CFLAGS:M-flto} 20697e5645SzrjCFLAGS+= -fno-lto 21697e5645SzrjLDFLAGS+= -flto 22697e5645Szrj.endif 23697e5645Szrj 24fcf53d9bSJohn MarinoCFLAGS+= -DIN_RTLD 25fcf53d9bSJohn MarinoCFLAGS+= -I${.CURDIR}/${MACHINE_ARCH} -I${.CURDIR} -D__thread= 267f5c8f97SJohn MarinoCFLAGS+= -I${.CURDIR}/../../lib/csu/common 27538c1620SSascha WildnerLDFLAGS+= -nostdlib -Wl,-e.rtld_start,--no-undefined 280a5ad630SJoerg SonnenbergerINSTALLFLAGS= -C -b 290a5ad630SJoerg Sonnenberger.ifndef NOFSCHG 300a5ad630SJoerg SonnenbergerINSTALLFLAGS+= -fschg 310a5ad630SJoerg Sonnenberger.endif 32*70839a95SSascha WildnerMLINKS= rtld.1 ld-elf.so.2.1 3340146e6aSSascha WildnerMLINKS+= rtld.1 _rtld_functrace.3 34984263bcSMatthew Dillon 35f03f3171SJohn Marino.if !defined(NO_SYMVER) 36f03f3171SJohn MarinoVERSION_DEF= ${.CURDIR}/../../lib/libc/Versions.def 37f03f3171SJohn MarinoSYMBOL_MAPS= ${.CURDIR}/Symbol.map 38f03f3171SJohn MarinoVERSION_MAP= Version.map 39f03f3171SJohn MarinoLDFLAGS+= -Wl,--version-script=${VERSION_MAP} 40f03f3171SJohn Marino 41f03f3171SJohn Marinortld.c: ${VERSION_MAP} 42f03f3171SJohn Marino 43f03f3171SJohn Marino.if exists(${.CURDIR}/${MACHINE_ARCH}/Symbol.map) 44f03f3171SJohn MarinoSYMBOL_MAPS+= ${.CURDIR}/${MACHINE_ARCH}/Symbol.map 45f03f3171SJohn Marino.endif 46f03f3171SJohn Marino.endif 47f03f3171SJohn Marino 48984263bcSMatthew Dillon.if exists(${.CURDIR}/${MACHINE_ARCH}/Makefile.inc) 49984263bcSMatthew Dillon.include "${.CURDIR}/${MACHINE_ARCH}/Makefile.inc" 50984263bcSMatthew Dillon.endif 51984263bcSMatthew Dillon 52984263bcSMatthew DillonCFLAGS+= -fpic -DPIC 53984263bcSMatthew DillonLDFLAGS+= -shared -Wl,-Bsymbolic 54d2a4c620SJoerg SonnenbergerDPADD= ${.OBJDIR}/../../lib/libc_rtld/libc_rtld_pic.a 55d2a4c620SJoerg SonnenbergerLDADD= -L${.OBJDIR}/../../lib/libc_rtld -lc_rtld_pic 56984263bcSMatthew Dillon 57fcf53d9bSJohn Marino.ifdef ENABLE_DEBUG 58fcf53d9bSJohn MarinoCFLAGS+= -DDEBUG 59fcf53d9bSJohn Marino.endif 60fcf53d9bSJohn Marino 6155d72589Szrj# The gcc80 -O2 tends to wrap malloc() + bzero() back to local calloc() by 6255d72589Szrj# emitting calloc: imul %rsi,%rdi; mov $0x1,%esi; jmpq 0xfoo <calloc> 6355d72589SzrjFLAGS_GROUPS= calloc 6455d72589Szrjcalloc_FLAGS= -fno-builtin-malloc 6555d72589Szrjcalloc_FLAGS_FILES= malloc.c 6655d72589Szrj 6716dbe6a9SFrançois Tigeot# Since moving rtld-elf to /libexec, we need to create a symlink. 6816dbe6a9SFrançois Tigeot# Fixup the existing binary that's there so we can symlink over it. 6916dbe6a9SFrançois Tigeotbeforeinstall: 7016dbe6a9SFrançois Tigeot.if exists(${DESTDIR}/usr/libexec/${PROG}) 7116dbe6a9SFrançois Tigeot chflags -h noschg ${DESTDIR}/usr/libexec/${PROG} 7216dbe6a9SFrançois Tigeot.endif 7316dbe6a9SFrançois Tigeot 74984263bcSMatthew Dillon.PATH: ${.CURDIR}/${MACHINE_ARCH} 75984263bcSMatthew Dillon 76f03f3171SJohn Marino.include <bsd.symver.mk> 77984263bcSMatthew Dillon.include <bsd.prog.mk> 78