From 517191eede15a4a185ac767f523556da2a1ea5d1 Mon Sep 17 00:00:00 2001 From: John Polstra 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(+) (limited to 'libexec/rtld-elf') diff --git a/libexec/rtld-elf/Makefile b/libexec/rtld-elf/Makefile index db8955e4bf74a..e3750cc7dfdd7 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.3