From 1e9fe24b397e86966b243b80e8c13218b6e382eb Mon Sep 17 00:00:00 2001 From: Max Wash Date: Sun, 15 Mar 2026 09:49:18 +0000 Subject: [PATCH] ld: anonymous and file-backed mmap tests --- sys/ld/main.c | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/sys/ld/main.c b/sys/ld/main.c index feab04d..f66079b 100644 --- a/sys/ld/main.c +++ b/sys/ld/main.c @@ -13,11 +13,14 @@ #include #include #include +#include #include #include int main(const struct rosetta_bootstrap *bs) { + kern_logf("ld"); + kern_handle_t task, address_space; task_self(&task); task_get_address_space(task, &address_space); @@ -29,9 +32,9 @@ int main(const struct rosetta_bootstrap *bs) sys_remote_set(SYS_REMOTE_NSD, 0, 0); const char *path = "/usr/lib/libc.so"; int flags = 4; - int fd = open(path, flags); kern_logf("sending msg: open(%s, %d)", path, flags); + int fd = open(path, flags); if (fd < 0) { kern_logf( @@ -60,5 +63,30 @@ int main(const struct rosetta_bootstrap *bs) kern_logf("data: %x %c %c %c", buf[0], buf[1], buf[2], buf[3]); + void *p + = mmap(NULL, + 0x1000, + PROT_READ | PROT_WRITE, + MAP_ANONYMOUS | MAP_PRIVATE, + -1, + 0); + if (p != MAP_FAILED) { + memset(p, 0x0, 0x1000); + kern_logf("mmap'd buffer at %p", p); + } else { + kern_logf("mmap buffer failed"); + } + + void *lib + = mmap(NULL, 0x1000, PROT_READ | PROT_EXEC, MAP_PRIVATE, fd, 0); + if (lib != MAP_FAILED) { + kern_logf("mmap'd %s at %p", path, lib); + unsigned char *tmp = lib; + kern_logf("data: %x %c %c %c", tmp[0], tmp[1], tmp[2], tmp[3]); + } else { + kern_logf("mmap lib failed"); + } + + kern_logf("ld finished"); return 0; }