@@ -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;
@@ -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",
@@ -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
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> --- Same patch as last time. At least in the Hurd port, GLRO(dl_pagesize) is one of the very things to get initialized, so this shouldn't cause any initialization order issues. But, if it's really undesirable for EXEC_PAGESIZE to be dropped, we could of course also define EXEC_PAGESIZE to some large value (16K?) on aarch64-gnu, provided that nothing actually tries to use it for anything. PAGE_SIZE is 4k in the current AArch64 GNU Mach, for what it's worth, but this is intended to eventually be build-time configurable. elf/dl-support.c | 6 +++++- elf/rtld.c | 2 ++ libio/libioP.h | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-)