about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorLeslie Zhai <zhaixiang@loongson.cn>2025-05-07 21:36:37 +0800
committerGitHub <noreply@github.com>2025-05-07 15:36:37 +0200
commit11513d662daf7a584b307eb3e27a512edef711b5 (patch)
tree0264d1db6f81492a51d21c1968cb9d529cce4e43 /src
parent6487ee0edafbcd0542927b95af9c4bae3522ed4d (diff)
downloadbox64-11513d662daf7a584b307eb3e27a512edef711b5.tar.gz
box64-11513d662daf7a584b307eb3e27a512edef711b5.zip
[NON4KPAGE] Fix AllocLoadElfMemory multiblocks wrong alignment (#2608) (#2609)
Diffstat (limited to 'src')
-rw-r--r--src/elfs/elfloader.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/elfs/elfloader.c b/src/elfs/elfloader.c
index b8fbef38..f05dd219 100644
--- a/src/elfs/elfloader.c
+++ b/src/elfs/elfloader.c
@@ -299,8 +299,8 @@ int AllocLoadElfMemory(box64context_t* context, elfheader_t* head, int mainbin)
             uint8_t prot = ((e->p_flags & PF_R)?PROT_READ:0)|((e->p_flags & PF_W)?PROT_WRITE:0)|((e->p_flags & PF_X)?PROT_EXEC:0);
             // check if alignment is correct
             uintptr_t balign = head->multiblocks[n].align-1;
-            if(balign<4095) balign = 4095;
-            head->multiblocks[n].asize = (e->p_memsz+(e->p_paddr&balign)+4095)&~4095;
+            if (balign < (box64_pagesize - 1)) balign = box64_pagesize - 1;
+            head->multiblocks[n].asize = (e->p_memsz + (e->p_paddr & balign) + (box64_pagesize - 1)) & ~(box64_pagesize - 1);
             int try_mmap = 1;
             if(e->p_paddr&balign)
                 try_mmap = 0;