From d39b3847c1c9368b2426e06fde33f6b441aff2d8 Mon Sep 17 00:00:00 2001 From: Qwinci <32550582+Qwinci@users.noreply.github.com> Date: Tue, 13 Feb 2024 21:42:49 +0200 Subject: [PATCH 1/2] rtdl: Align size to page size when mmaping dso --- options/rtdl/generic/linker.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/options/rtdl/generic/linker.cpp b/options/rtdl/generic/linker.cpp index f8f06c3405..48f88783b9 100644 --- a/options/rtdl/generic/linker.cpp +++ b/options/rtdl/generic/linker.cpp @@ -1,3 +1,4 @@ +#include #include #include @@ -439,6 +440,8 @@ void ObjectRepository::_fetchFromFile(SharedObject *object, int fd) { __ensure(!(object->baseAddress & (hugeSize - 1))); + highest_address = (highest_address + mlibc::page_size - 1) & ~(mlibc::page_size - 1); + #if MLIBC_MMAP_ALLOCATE_DSO void *mappedAddr = nullptr; From 109f75e1b85532540e25258d268281e737d9c4a1 Mon Sep 17 00:00:00 2001 From: Qwinci <32550582+Qwinci@users.noreply.github.com> Date: Tue, 13 Feb 2024 21:43:22 +0200 Subject: [PATCH 2/2] sysdeps/managarm: Enable dso mmap --- meson.build | 1 + 1 file changed, 1 insertion(+) diff --git a/meson.build b/meson.build index 9902f9a411..21af1e473c 100644 --- a/meson.build +++ b/meson.build @@ -193,6 +193,7 @@ elif host_machine.system() == 'managarm' rtdl_include_dirs += include_directories('sysdeps/managarm/include') libc_include_dirs += include_directories('sysdeps/managarm/include') internal_conf.set10('MLIBC_MAP_DSO_SEGMENTS', true) + internal_conf.set10('MLIBC_MMAP_ALLOCATE_DSO', true) internal_conf.set10('MLIBC_MAP_FILE_WINDOWS', true) subdir('sysdeps/managarm') elif host_machine.system() == 'ironclad'