From e595dd9e791a7eb6b5a7fe22be06e31e5865a8a5 Mon Sep 17 00:00:00 2001 From: jdp Date: Fri, 9 Apr 1999 00:28:43 +0000 Subject: Eliminate all machine-dependent code from the main source body and the Makefile, and move it down into the architecture-specific subdirectories. Eliminate an asm() statement for the i386. Make the dynamic linker work if it is built as an executable instead of as a shared library. See i386/Makefile.inc to find out how to do it. Note, this change is not enabled and it might never be enabled. But it might be useful in the future. Building the dynamic linker as an executable should make it start up faster, because it won't have any relocations. But in practice I suspect the difference is negligible. --- libexec/rtld-elf/Makefile | 39 +++++++++++++++++++++++++++------------ 1 file changed, 27 insertions(+), 12 deletions(-) (limited to 'libexec/rtld-elf/Makefile') diff --git a/libexec/rtld-elf/Makefile b/libexec/rtld-elf/Makefile index f6a1054..bceb2a2 100644 --- a/libexec/rtld-elf/Makefile +++ b/libexec/rtld-elf/Makefile @@ -1,25 +1,40 @@ # -# $Id: Makefile,v 1.4 1998/09/04 19:03:57 dfr Exp $ +# $Id: Makefile,v 1.5 1999/02/15 05:02:54 nate Exp $ # - PROG= ld-elf.so.1 SRCS= rtld_start.S rtld.c map_object.c malloc.c xmalloc.c debug.c \ reloc.c NOMAN= true -CFLAGS+= -fpic -Wall -DFREEBSD_ELF -I${.CURDIR} -LDADD+= -lc_pic +CFLAGS+= -Wall -DFREEBSD_ELF -I${.CURDIR}/${MACHINE_ARCH} -I${.CURDIR} +LDFLAGS+= -nostdlib -e .rtld_start +INSTALLFLAGS+= -fschg -C +.if exists(${.CURDIR}/${MACHINE_ARCH}/Makefile.inc) +.include "${.CURDIR}/${MACHINE_ARCH}/Makefile.inc" +.endif -.if ${MACHINE_ARCH} == "alpha" -CFLAGS+= -mno-fp-regs -LDFLAGS+= -nostdlib -Wl,-Bshareable,-Bsymbolic -e .rtld_start -.elif ${MACHINE_ARCH} == "i386" -CFLAGS+= -elf -LDFLAGS+= -elf -nostdlib -Wl,-Bshareable,-Bsymbolic +# If LDSCRIPT is defined, we build the dynamic linker as an +# executable. Otherwise we build it as a shared object. We ignore +# LDSCRIPT if the running kernel is too old to support it. +.if defined(LDSCRIPT) +KERN_OSRELDATE!= /sbin/sysctl -n kern.osreldate 2>/dev/null || echo 0 +.if ${KERN_OSRELDATE} >= 400001 +LDSO_IS_EXECUTABLE= yes +.endif .endif -# Atomic installation with "-C" is very important for this program. -INSTALLFLAGS+= -fschg -C +.ifdef LDSO_IS_EXECUTABLE +OBJS+= dyn_hack.so +LDFLAGS+= -Wl,-T,${LDSCRIPT} -Wl,-E -Wl,-Bstatic +LDADD+= -lc +.else +CFLAGS+= -fpic -DPIC +LDFLAGS+= -shared -Wl,-Bsymbolic +LDADD+= -lc_pic +.endif + +dyn_hack.so: + ${CC} -shared -nostdlib -o dyn_hack.so -x c /dev/null .PATH: ${.CURDIR}/${MACHINE_ARCH} -- cgit v1.1