From 6e5e629f070fc8218702f29cdbdf434fc02b4eaa Mon Sep 17 00:00:00 2001 From: Ken Smith Date: Fri, 13 Jul 2007 16:18:43 +0000 Subject: [PATCH] Cache does not serve any purpose when rtld is relocating itself, do not bother allocating one. Submitted by: kan Approved by: re (bmah) --- libexec/rtld-elf/sparc64/reloc.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/libexec/rtld-elf/sparc64/reloc.c b/libexec/rtld-elf/sparc64/reloc.c index 225322ed93e..33eab79bc43 100644 --- a/libexec/rtld-elf/sparc64/reloc.c +++ b/libexec/rtld-elf/sparc64/reloc.c @@ -260,8 +260,12 @@ reloc_non_plt(Obj_Entry *obj, Obj_Entry *obj_rtld) * The dynamic loader may be called from a thread, we have * limited amounts of stack available so we cannot use alloca(). */ - cache = mmap(NULL, bytes, PROT_READ|PROT_WRITE, MAP_ANON, -1, 0); - if (cache == MAP_FAILED) + if (obj != obj_rtld) { + cache = mmap(NULL, bytes, PROT_READ|PROT_WRITE, MAP_ANON, + -1, 0); + if (cache == MAP_FAILED) + cache = NULL; + } else cache = NULL; relalim = (const Elf_Rela *)((caddr_t)obj->rela + obj->relasize);