Allow glibc to be compiled without EXEC_PAGESIZE

We would like to avoid statically defining any specific page size on
aarch64-gnu, and instead make sure that everything uses the dynamic
page size, available via vm_page_size and GLRO(dl_pagesize).

There are currently a few places in glibc that require EXEC_PAGESIZE
to be defined. Per Roland's suggestion [0], drop the static
GLRO(dl_pagesize) initializers (for now, only if EXEC_PAGESIZE is not
defined), and don't require EXEC_PAGESIZE definition for libio to
enable mmap usage.

[0]: https://mail.gnu.org/archive/html/bug-hurd/2011-10/msg00035.html

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Message-ID: <20240323173301.151066-4-bugaevc@gmail.com>
This commit is contained in:
Sergey Bugaev 2024-03-23 20:32:44 +03:00 committed by Samuel Thibault
parent 4648bfbbde
commit 49aa652db8
3 changed files with 8 additions and 2 deletions

View File

@ -135,7 +135,11 @@ void *_dl_random;
#include <dl-procruntime.c>
#include <dl-procinfo.c>
size_t _dl_pagesize = EXEC_PAGESIZE;
size_t _dl_pagesize
#ifdef EXEC_PAGESIZE
= EXEC_PAGESIZE
#endif
;
size_t _dl_minsigstacksize = CONSTANT_MINSIGSTKSZ;

View File

@ -358,7 +358,9 @@ struct rtld_global_ro _rtld_global_ro attribute_relro =
._dl_debug_fd = STDERR_FILENO,
._dl_lazy = 1,
._dl_fpu_control = _FPU_DEFAULT,
#ifdef EXEC_PAGESIZE
._dl_pagesize = EXEC_PAGESIZE,
#endif
._dl_inhibit_cache = 0,
._dl_profile_output = "/var/tmp",

View File

@ -852,7 +852,7 @@ extern off64_t _IO_seekpos_unlocked (FILE *, off64_t, int)
# define MAP_ANONYMOUS MAP_ANON
# endif
# if !defined(MAP_ANONYMOUS) || !defined(EXEC_PAGESIZE)
# if !defined(MAP_ANONYMOUS)
# undef _G_HAVE_MMAP
# define _G_HAVE_MMAP 0
# endif