_dl_protect_relro (struct elf_resolve *l)
{
ElfW(Addr) base = (ElfW(Addr)) DL_RELOC_ADDR(l->loadaddr, l->relro_addr);
- ElfW(Addr) start = (base & ~(_dl_pagesize - 1));
- ElfW(Addr) end = ((base + l->relro_size) & ~(_dl_pagesize - 1));
+ ElfW(Addr) start = (base & PAGE_ALIGN);
+ ElfW(Addr) end = ((base + l->relro_size) & PAGE_ALIGN);
_dl_if_debug_dprint("RELRO protecting %s: start:%x, end:%x\n", l->libname, start, end);
if (start != end &&
_dl_mprotect ((void *) start, end - start, PROT_READ) < 0) {
The actual page size doesn't really matter; as long
as we're self-consistent here, we're safe. */
if (size < _dl_pagesize)
- rounded_size = (size + _dl_pagesize - 1) & _dl_pagesize;
+ rounded_size = (size + ADDR_ALIGN) & _dl_pagesize;
else
rounded_size = size;