[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 03/20] Allow glibc to be compiled without EXEC_PAGESIZE
From: |
Sergey Bugaev |
Subject: |
[PATCH v2 03/20] Allow glibc to be compiled without EXEC_PAGESIZE |
Date: |
Sat, 23 Mar 2024 20:32:44 +0300 |
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(-)
diff --git a/elf/dl-support.c b/elf/dl-support.c
index 451932dd..cb0bbd21 100644
--- a/elf/dl-support.c
+++ b/elf/dl-support.c
@@ -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;
diff --git a/elf/rtld.c b/elf/rtld.c
index ac4bb236..18d73f19 100644
--- a/elf/rtld.c
+++ b/elf/rtld.c
@@ -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",
diff --git a/libio/libioP.h b/libio/libioP.h
index 1af287b1..1a7f547e 100644
--- a/libio/libioP.h
+++ b/libio/libioP.h
@@ -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
--
2.44.0
- [PATCH v2 00/20] aarch64-gnu port & GNU/Hurd on AArch64 progress, Sergey Bugaev, 2024/03/23
- [PATCH v2 01/20] hurd: Move internal functions to internal header, Sergey Bugaev, 2024/03/23
- [PATCH v2 05/20] hurd: Use the RETURN_ADDRESS macro, Sergey Bugaev, 2024/03/23
- [PATCH v2 04/20] hurd: Disable Prefer_MAP_32BIT_EXEC on non-x86_64 for now, Sergey Bugaev, 2024/03/23
- [PATCH v2 06/20] htl: Respect GL(dl_stack_flags) when allocating stacks, Sergey Bugaev, 2024/03/23
- [PATCH v2 08/20] aarch64: Add dl-procinfo, Sergey Bugaev, 2024/03/23
- [PATCH v2 11/20] mach: Add a basic AArch64 port, Sergey Bugaev, 2024/03/23
- [PATCH v2 13/20] hurd: Add a basic AArch64 port, Sergey Bugaev, 2024/03/23
- [PATCH v2 18/20] htl: Implement some support for TLS_DTV_AT_TP, Sergey Bugaev, 2024/03/23
- [PATCH v2 02/20] hurd: Stop relying on VM_MAX_ADDRESS, Sergey Bugaev, 2024/03/23
- [PATCH v2 03/20] Allow glibc to be compiled without EXEC_PAGESIZE,
Sergey Bugaev <=
- [PATCH v2 07/20] aarch64: Move pointer_guard.h out of sysdeps/unix/sysv/linux, Sergey Bugaev, 2024/03/23
- [PATCH v2 10/20] aarch64: Allow building without kernel support for BTI, Sergey Bugaev, 2024/03/23
- [PATCH v2 12/20] mach: Declare the new thread_set_self_state () trap, Sergey Bugaev, 2024/03/23
- [PATCH v2 15/20] hurd: Implement longjmp for AArch64, Sergey Bugaev, 2024/03/23
- [PATCH v2 17/20] hurd: Add an AArch64 signal implementation, Sergey Bugaev, 2024/03/23
- [PATCH v2 09/20] aarch64: Move saving user entry into _dl_start_user, Sergey Bugaev, 2024/03/23
- [PATCH v2 14/20] hurd: Implement TLS on AArch64, Sergey Bugaev, 2024/03/23
- [PATCH v2 16/20] Add FPE_FLTIDO, Sergey Bugaev, 2024/03/23
- [PATCH v2 19/20] htl: Add an AArch64 implementation, Sergey Bugaev, 2024/03/23
- [PATCH v2 20/20] hurd: Add expected aarch64-gnu abistlists, Sergey Bugaev, 2024/03/23