Files
gentoo/dev-libs/jemalloc/files/jemalloc-5.3.0-aarch64-64kib-page-size.patch
Matt Jolly dcbf7b507e dev-libs/jemalloc: fix aarch64 non-4k page runtime issue
Jemalloc can't handle running on a system with a larger page size than
it was configured with, resulting in runtime failures if e.g. a binpkg
is used or build-time detection fails (some M1 processors, at least),
resulting in failures like:

	<jemalloc>: Unsupported system page size
	memory allocation of 72 bytes failed

On the other hand, it's quite happy to run when configured with a larger
page size (e.g. 64k) on systems with smaller page sizes (16k, 4k). Apply
an upstream patch to default to 64k on aarch64; users may override this
by passing `--with-lg-pagesize=foo` in `EXTRA_ECONF` if they so desire.

This won't resolve issues on other arches, but it's far less common to
see this sort of weirdness there anyway.

Closes: https://bugs.gentoo.org/964347
Signed-off-by: Matt Jolly <kangie@gentoo.org>
2026-01-26 11:32:46 +10:00

39 lines
1.5 KiB
Diff

https://github.com/facebook/jemalloc/commit/7dcdafea00a3a02cfbc84a798a0cc626515011eb
From: lexprfuncall <5360361+lexprfuncall@users.noreply.github.com>
Date: Mon, 25 Aug 2025 19:39:30 -0700
Subject: [PATCH] Change the default page size to 64KiB on Aarch64 Linux
This updates the configuration script to set the default page size to
64KiB on Aarch64 Linux. This is motivated by compatibility as a build
configured for a 64KiB page will work on kernels that use the smaller
4KiB or 16KiB pages, whereas the reverse is not true.
To make the configured page size setting more visible, the script now
displays the page size when printing the configuration results.
Users that want to override the page size in to choose a smaller value
can still do so with the --with-lg-pagesize configuration option.
--- a/configure.ac
+++ b/configure.ac
@@ -1990,6 +1990,11 @@ case "${host}" in
LG_PAGE=14
fi
;;
+ aarch64-unknown-linux-*)
+ if test "x$LG_PAGE" = "xdetect"; then
+ LG_PAGE=16
+ fi
+ ;;
esac
if test "x$LG_PAGE" = "xdetect"; then
AC_CACHE_CHECK([LG_PAGE],
@@ -3077,6 +3082,8 @@ AC_MSG_RESULT([INCLUDEDIR : ${INCLUDEDIR}])
AC_MSG_RESULT([LIBDIR : ${LIBDIR}])
AC_MSG_RESULT([MANDIR : ${MANDIR}])
AC_MSG_RESULT([])
+AC_MSG_RESULT([LG_PAGE : ${LG_PAGE}])
+AC_MSG_RESULT([])
AC_MSG_RESULT([srcroot : ${srcroot}])
AC_MSG_RESULT([abs_srcroot : ${abs_srcroot}])
AC_MSG_RESULT([objroot : ${objroot}])