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' 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;