]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Allow glibc to be compiled without EXEC_PAGESIZE
authorSergey Bugaev <bugaevc@gmail.com>
Sat, 23 Mar 2024 17:32:44 +0000 (20:32 +0300)
committerSamuel Thibault <samuel.thibault@ens-lyon.org>
Sat, 23 Mar 2024 21:47:26 +0000 (22:47 +0100)
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>

elf/dl-support.c
elf/rtld.c
libio/libioP.h

index 451932dd03e971b8afecd46a2b54074c5844a794..cb0bbd213ff4b8439abb2cada6775398027cf1b0 100644 (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;
 
index ac4bb236527882db69263b7c8ecf40ee9621d285..18d73f19c6232f2b27b10df1ce4d51c48fd63f2c 100644 (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",
 
index 1af287b19f30fa2a1b0ba883edea5369c6a8ad44..1a7f547e0cb822dddfabab9ec3e8c6ed63d65633 100644 (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