From 188b81ad9f7e62db6af8aa4b7d36a071c1a22b41 Mon Sep 17 00:00:00 2001 From: Michal Gregorczyk Date: Wed, 2 Jul 2025 15:38:16 +0200 Subject: [PATCH] Enable 16kb pages for x86_64 and arm64 --- projects/libbpf/build.mk | 3 ++- toolchains/autotools.mk | 1 + toolchains/cmake.mk | 1 + toolchains/config.site.template | 2 +- toolchains/toolchains.mk | 9 ++++++--- 5 files changed, 11 insertions(+), 5 deletions(-) diff --git a/projects/libbpf/build.mk b/projects/libbpf/build.mk index e91d5f27..5fa61451 100644 --- a/projects/libbpf/build.mk +++ b/projects/libbpf/build.mk @@ -18,7 +18,8 @@ $(LIBBPF_ANDROID): $(ANDROID_OUT_DIR)/lib/pkgconfig/zlib.pc OBJDIR=$(abspath $(LIBBPF_ANDROID_BUILD_DIR)) \ AR=$(abspath $(ANDROID_TOOLCHAIN_PATH)/llvm-ar) \ CC=$(abspath $(ANDROID_TOOLCHAIN_PATH)/$(ANDROID_TRIPLE)$(NDK_API)-clang) \ - EXTRA_CFLAGS="$(LIBBPF_EXTRA_CFLAGS)" + EXTRA_CFLAGS="$(LIBBPF_EXTRA_CFLAGS)" \ + EXTRA_LDFLAGS="-Wl,-z,max-page-size=$(ANDROID_MAX_PAGE_SIZE)" cp $(LIBBPF_SRCS)/LICENSE $(ANDROID_OUT_DIR)/licenses/libbpf touch $@ diff --git a/toolchains/autotools.mk b/toolchains/autotools.mk index ec13c4d1..b6ae3d54 100644 --- a/toolchains/autotools.mk +++ b/toolchains/autotools.mk @@ -22,6 +22,7 @@ $(ANDROID_CONFIG_SITE): | $(ANDROID_OUT_DIR) @sed -ibkp -e "s++$(ANDROID_TRIPLE)+g" $@ @sed -ibkp -e "s++$(abspath $(ANDROID_OUT_DIR))+g" $@ @sed -ibkp -e "s++$(NDK_API)+g" $@ + @sed -ibkp -e "s++$(ANDROID_MAX_PAGE_SIZE)+g" $@ $(HOST_CONFIG_SITE): | $(HOST_OUT_DIR) cp toolchains/config.site.host.template $@ diff --git a/toolchains/cmake.mk b/toolchains/cmake.mk index 2fe2b54a..d94733c5 100644 --- a/toolchains/cmake.mk +++ b/toolchains/cmake.mk @@ -19,6 +19,7 @@ ANDROID_EXTRA_CMAKE_FLAGS += -DANDROID_ABI=$(CMAKE_ABI) ANDROID_EXTRA_CMAKE_FLAGS += -DANDROID_PLATFORM=android-$(NDK_API) ANDROID_EXTRA_CMAKE_FLAGS += -DANDROID_STL=c++_shared ANDROID_EXTRA_CMAKE_FLAGS += -DANDROID_ALLOW_UNDEFINED_SYMBOLS=TRUE +ANDROID_EXTRA_CMAKE_FLAGS += -DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON ANDROID_EXTRA_CMAKE_FLAGS += -DCMAKE_BUILD_TYPE=$(BUILD_TYPE) # Install libs/binaries to out directory. Scan the out directory diff --git a/toolchains/config.site.template b/toolchains/config.site.template index e46a55a6..3c6d42cb 100644 --- a/toolchains/config.site.template +++ b/toolchains/config.site.template @@ -12,4 +12,4 @@ test -z "$STRIP" && STRIP=/llvm-strip test -z "$PKG_CONFIG_LIBDIR" && PKG_CONFIG_LIBDIR=/lib/pkgconfig test -z "$CPPFLAGS" && CPPFLAGS="-I/include $EXTRA_CPPFLAGS" test -z "$CFLAGS" && CFLAGS="-fPIC $EXTRA_CFLAGS" -test -z "$LDFLAGS" && LDFLAGS="-L/lib -L/lib64 $EXTRA_LDFLAGS" +test -z "$LDFLAGS" && LDFLAGS="-L/lib -L/lib64 -Wl,-z,max-page-size= $EXTRA_LDFLAGS" diff --git a/toolchains/toolchains.mk b/toolchains/toolchains.mk index b8f3289a..1d540e3a 100644 --- a/toolchains/toolchains.mk +++ b/toolchains/toolchains.mk @@ -6,14 +6,14 @@ ANDROID_TOOLCHAIN_PATH = \ $(abspath $(NDK_PATH)/toolchains/llvm/prebuilt/linux-x86_64/bin) ANDROID_TOOLCHAIN_STRIP_PATH = $(ANDROID_TOOLCHAIN_PATH)/llvm-strip -include toolchains/autotools.mk -include toolchains/cmake.mk - ifeq ($(NDK_ARCH), arm64) +ANDROID_MAX_PAGE_SIZE = 16384 ANDROID_SYSROOT_LIB_SUBDIR = aarch64-linux-android else ifeq ($(NDK_ARCH), x86_64) +ANDROID_MAX_PAGE_SIZE = 16384 ANDROID_SYSROOT_LIB_SUBDIR = x86_64-linux-android else ifeq ($(NDK_ARCH), armv7) +ANDROID_MAX_PAGE_SIZE = 4096 ANDROID_SYSROOT_LIB_SUBDIR = arm-linux-androideabi else $(error unknown abi $(NDK_ARCH)) @@ -28,3 +28,6 @@ ANDROID_SYSROOT_LIB_PATH = \ $(ANDROID_OUT_DIR)/lib/libc++_shared.so: | $(ANDROID_OUT_DIR) cp $(ANDROID_SYSROOT_PATH)/usr/lib/$(ANDROID_SYSROOT_LIB_SUBDIR)/libc++_shared.so $@ + +include toolchains/autotools.mk +include toolchains/cmake.mk