From aa26657bfbbf4260f14797da8a632778e067951e Mon Sep 17 00:00:00 2001 From: jdp Date: Sat, 8 Jul 2000 03:27:54 +0000 Subject: When installing the dynamic linker, save the previous version in "ld-elf.so.1.old". The dynamic linker is a critical component of the system, and it is difficult to recover if it is damaged and there isn't a working backup available. For instance, parts of the toolchain such as the assembler are dynamically linked, making it impossible to build a new dynamic linker if the installed one doesn't work. --- libexec/rtld-elf/Makefile | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/libexec/rtld-elf/Makefile b/libexec/rtld-elf/Makefile index db8955e..e3750cc 100644 --- a/libexec/rtld-elf/Makefile +++ b/libexec/rtld-elf/Makefile @@ -42,3 +42,15 @@ dyn_hack.so: .PATH: ${.CURDIR}/${MACHINE_ARCH} .include + +# Keep the previous version of the dynamic linker for recovery +# purposes. This must come after the include of so that +# BINDIR is set for the exists(...) constructs. +beforeinstall: +.if exists(${DESTDIR}${BINDIR}/${PROG}) + -chflags noschg ${DESTDIR}${BINDIR}/${PROG} +.if exists(${DESTDIR}${BINDIR}/${PROG}.old) + -chflags noschg ${DESTDIR}${BINDIR}/${PROG}.old +.endif + cp -p ${DESTDIR}${BINDIR}/${PROG} ${DESTDIR}${BINDIR}/${PROG}.old +.endif -- cgit v1.1