xref: /dflybsd-src/libexec/rtld-elf/Makefile (revision 70839a950bcee0684fe8435afcece612e92a5382)
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