X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/b60166b327a9108b07e3069fa6568a451529ffd9..c166bd62fbb907f95f79f621e2a2fb4fdde08e01:/lunaix-os/kernel/exe/elf32/ldelf32.c diff --git a/lunaix-os/kernel/exe/elf32/ldelf32.c b/lunaix-os/kernel/exe/elf32/ldelf32.c index a72a14d..69ae939 100644 --- a/lunaix-os/kernel/exe/elf32/ldelf32.c +++ b/lunaix-os/kernel/exe/elf32/ldelf32.c @@ -1,7 +1,6 @@ #include #include #include -#include #include #include @@ -15,7 +14,7 @@ elf32_smap(struct load_context* ldctx, { struct v_file* elfile = (struct v_file*)elf->elf_file; - assert(PG_ALIGNED(phdre->p_offset)); + assert(!va_offset(phdre->p_offset)); int proct = 0; if ((phdre->p_flags & PF_R)) { @@ -33,17 +32,17 @@ elf32_smap(struct load_context* ldctx, struct mmap_param param = { .vms_mnt = container->vms_mnt, .pvms = vmspace(container->proc), .proct = proct, - .offset = PG_ALIGN(phdre->p_offset), - .mlen = ROUNDUP(phdre->p_memsz, PG_SIZE), + .offset = page_aligned(phdre->p_offset), + .mlen = page_upaligned(phdre->p_memsz), .flags = MAP_FIXED | MAP_PRIVATE, .type = REGION_TYPE_CODE }; struct mm_region* seg_reg; - int status = mmap_user(NULL, &seg_reg, PG_ALIGN(va), elfile, ¶m); + int status = mmap_user(NULL, &seg_reg, page_aligned(va), elfile, ¶m); if (!status) { size_t next_addr = phdre->p_memsz + va; - ldctx->end = MAX(ldctx->end, ROUNDUP(next_addr, PG_SIZE)); + ldctx->end = MAX(ldctx->end, page_upaligned(next_addr)); ldctx->mem_sz += phdre->p_memsz; } else { // we probably fucked up our process @@ -117,7 +116,7 @@ load_executable(struct load_context* context, const struct v_file* exefile) continue; } - if (phdr->p_align != PG_SIZE) { + if (phdr->p_align != PAGE_SIZE) { // surprising alignment! errno = ENOEXEC; break;