Browse Source

rtld: Do not protect RELRO segments when we don't use an MMU.

	Without MMU, we cannot mark memory regions as read-only.

	* ldso/ldso/dl-elf.c (_dl_protect_relro): Do nothing if
	__ARCH_USE_MMU__ is defined.

Signed-off-by: Christophe Lyon <christophe.lyon@st.com>
Christophe Lyon 5 years ago
parent
commit
57436cad9c
1 changed files with 2 additions and 0 deletions
  1. 2 0
      ldso/ldso/dl-elf.c

+ 2 - 0
ldso/ldso/dl-elf.c

@@ -117,6 +117,7 @@ int _dl_unmap_cache(void)
 void
 _dl_protect_relro (struct elf_resolve *l)
 {
+#ifdef __ARCH_USE_MMU__
 	ElfW(Addr) base = (ElfW(Addr)) DL_RELOC_ADDR(l->loadaddr, l->relro_addr);
 	ElfW(Addr) start = (base & PAGE_ALIGN);
 	ElfW(Addr) end = ((base + l->relro_size) & PAGE_ALIGN);
@@ -126,6 +127,7 @@ _dl_protect_relro (struct elf_resolve *l)
 		_dl_dprintf(2, "%s: cannot apply additional memory protection after relocation", l->libname);
 		_dl_exit(0);
 	}
+#endif
 }
 
 /* This function's behavior must exactly match that