exec: Correctly align memory using .p_align

This commit is contained in:
EnderIce2 2024-11-19 05:10:38 +02:00
parent 7b054050c7
commit a96086c432
Signed by untrusted user who does not match committer: enderice2
GPG Key ID: EACC3AD603BAB4DD

View File

@ -158,11 +158,11 @@ namespace Execute
continue; continue;
void *pAddr = vma->RequestPages(TO_PAGES(ProgramHeader.p_memsz), true); 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); uintptr_t SegDestOffset = ProgramHeader.p_vaddr - uintptr_t(vAddr);
vmm.Map(vAddr, pAddr, vmm.Map(vAddr, pAddr,
ProgramHeader.p_memsz, ALIGN_UP(ProgramHeader.p_memsz, ProgramHeader.p_align),
Memory::RW | Memory::US); Memory::RW | Memory::US);
debug("Mapped %#lx to %#lx (%ld bytes)", debug("Mapped %#lx to %#lx (%ld bytes)",