From a96086c432ab9c5391f76f9fe201196e09de6298 Mon Sep 17 00:00:00 2001 From: EnderIce2 Date: Tue, 19 Nov 2024 05:10:38 +0200 Subject: [PATCH] exec: Correctly align memory using .p_align --- exec/elf/elf_loader.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/exec/elf/elf_loader.cpp b/exec/elf/elf_loader.cpp index 3004647..efa59bd 100644 --- a/exec/elf/elf_loader.cpp +++ b/exec/elf/elf_loader.cpp @@ -158,11 +158,11 @@ namespace Execute continue; void *pAddr = vma->RequestPages(TO_PAGES(ProgramHeader.p_memsz), true); - void *vAddr = (void *)ALIGN_DOWN(ProgramHeader.p_vaddr, PAGE_SIZE); + void *vAddr = (void *)ALIGN_DOWN(ProgramHeader.p_vaddr, ProgramHeader.p_align); uintptr_t SegDestOffset = ProgramHeader.p_vaddr - uintptr_t(vAddr); vmm.Map(vAddr, pAddr, - ProgramHeader.p_memsz, + ALIGN_UP(ProgramHeader.p_memsz, ProgramHeader.p_align), Memory::RW | Memory::US); debug("Mapped %#lx to %#lx (%ld bytes)",