From 4024c42af1814d0301d7172b19114af4aff92915 Mon Sep 17 00:00:00 2001 From: monkuous <84319635+monkuous@users.noreply.github.com> Date: Sat, 15 Nov 2025 23:19:02 +0100 Subject: [PATCH] kernel: pass AT_PAGESZ on exec --- kernel-src/include/kernel/elf.h | 2 ++ kernel-src/sys/elf.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/kernel-src/include/kernel/elf.h b/kernel-src/include/kernel/elf.h index 8ff64f01..467081fe 100644 --- a/kernel-src/include/kernel/elf.h +++ b/kernel-src/include/kernel/elf.h @@ -27,6 +27,7 @@ #define AT_PHDR 3 #define AT_PHENT 4 #define AT_PHNUM 5 +#define AT_PAGESZ 6 #define AT_ENTRY 9 #define AT_SECURE 23 #define AT_EXECFN 31 @@ -43,6 +44,7 @@ typedef struct { auxv64_t entry; auxv64_t execfn; auxv64_t secure; + auxv64_t pagesz; auxv64_t null; } auxv64list_t; diff --git a/kernel-src/sys/elf.c b/kernel-src/sys/elf.c index 484b841d..6d7c142e 100644 --- a/kernel-src/sys/elf.c +++ b/kernel-src/sys/elf.c @@ -163,11 +163,13 @@ int elf_load(vnode_t *vnode, void *base, void **entry, char **interpreter, auxv6 auxv64->phent.type = AT_PHENT; auxv64->entry.type = AT_ENTRY; auxv64->secure.type = AT_SECURE; + auxv64->pagesz.type = AT_PAGESZ; auxv64->secure.val = 0; // set later by whoever called elf_load auxv64->phnum.val = header.phcount; auxv64->phent.val = header.phsize; auxv64->entry.val = header.entry + (uintptr_t)base; + auxv64->pagesz.val = PAGE_SIZE; *entry = (void *)(header.entry + (uintptr_t)base); __assert(header.phsize == sizeof(elfph64_t));