From 30fa863a2deea750811169b34b058a2452d1452f Mon Sep 17 00:00:00 2001 From: Hal Eisen Date: Tue, 20 Jan 2026 17:37:47 -0800 Subject: [PATCH 1/2] 16kb page alignment --- app/build.gradle.kts | 4 ++++ llama-impl/src/main/cpp/CMakeLists.txt | 1 + subprojects/shizuku-manager/src/main/jni/CMakeLists.txt | 5 ++++- termux/termux-emulator/build.gradle.kts | 1 + termux/termux-emulator/src/main/jni/Android.mk | 1 + termux/termux-shared/build.gradle.kts | 8 ++++++++ termux/termux-shared/src/main/cpp/Android.mk | 1 + 7 files changed, 20 insertions(+), 1 deletion(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index cf141ce895..8e74c92633 100755 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -153,6 +153,10 @@ android { excludes.add("META-INF/DEPENDENCIES") excludes.add("META-INF/gradle/incremental.annotation.processors") } + // Note: Native libraries (.so files) are configured to be uncompressed via the noCompress set + // below. All locally-built native libraries have been configured with 16 KB page alignment + // linker flags (-Wl,-z,max-page-size=16384). External dependencies (libandroid-tree-sitter.so, + // libdt_socket.so, libjdwp.so, libnpt.so) require updates from their maintainers for 16 KB alignment. } compileOptions { sourceCompatibility = JavaVersion.VERSION_17 diff --git a/llama-impl/src/main/cpp/CMakeLists.txt b/llama-impl/src/main/cpp/CMakeLists.txt index b07ebd4bbf..927af8a87f 100644 --- a/llama-impl/src/main/cpp/CMakeLists.txt +++ b/llama-impl/src/main/cpp/CMakeLists.txt @@ -45,6 +45,7 @@ add_library(${CMAKE_PROJECT_NAME} SHARED # Specifies libraries CMake should link to your target library. You # can link libraries from various origins, such as libraries defined in this # build script, prebuilt third-party libraries, or Android system libraries. +target_link_options(${CMAKE_PROJECT_NAME} PRIVATE -Wl,-z,max-page-size=16384) target_link_libraries(${CMAKE_PROJECT_NAME} # List libraries link to the target library llama diff --git a/subprojects/shizuku-manager/src/main/jni/CMakeLists.txt b/subprojects/shizuku-manager/src/main/jni/CMakeLists.txt index 8965bda48d..2c0a4cc661 100644 --- a/subprojects/shizuku-manager/src/main/jni/CMakeLists.txt +++ b/subprojects/shizuku-manager/src/main/jni/CMakeLists.txt @@ -10,11 +10,12 @@ if (NOT CMAKE_BUILD_TYPE STREQUAL "Debug") message("Builing Release...") add_compile_options(-Os -flto -fvisibility=hidden -fvisibility-inlines-hidden) - add_link_options(-flto -Wl,--exclude-libs,ALL -Wl,--gc-sections -Wl,--strip-all) + add_link_options(-flto -Wl,--exclude-libs,ALL -Wl,--gc-sections -Wl,--strip-all -Wl,-z,max-page-size=16384) else () message("Builing Debug...") add_definitions(-DDEBUG) + add_link_options(-Wl,-z,max-page-size=16384) endif () find_package(boringssl REQUIRED CONFIG) @@ -23,6 +24,7 @@ find_package(cxx REQUIRED CONFIG) add_executable(libshizuku.so starter.cpp misc.cpp selinux.cpp cgroup.cpp) +target_link_options(libshizuku.so PRIVATE -Wl,-z,max-page-size=16384) target_link_libraries(libshizuku.so log cxx::cxx) if (NOT CMAKE_BUILD_TYPE STREQUAL "Debug") @@ -33,6 +35,7 @@ endif () add_library(adb SHARED adb_pairing.cpp misc.cpp) +target_link_options(adb PRIVATE -Wl,-z,max-page-size=16384) target_link_libraries(adb log boringssl::crypto_static cxx::cxx) if (NOT CMAKE_BUILD_TYPE STREQUAL "Debug") diff --git a/termux/termux-emulator/build.gradle.kts b/termux/termux-emulator/build.gradle.kts index fdb505319f..a95e4e97b8 100644 --- a/termux/termux-emulator/build.gradle.kts +++ b/termux/termux-emulator/build.gradle.kts @@ -13,6 +13,7 @@ android { externalNativeBuild { ndkBuild { cFlags += arrayOf("-std=c11", "-Wall", "-Wextra", "-Werror", "-Os", "-fno-stack-protector", "-Wl,--gc-sections") + ldFlags += arrayOf("-Wl,-z,max-page-size=16384") } } } diff --git a/termux/termux-emulator/src/main/jni/Android.mk b/termux/termux-emulator/src/main/jni/Android.mk index 6c6f8b2299..e12216f1ac 100644 --- a/termux/termux-emulator/src/main/jni/Android.mk +++ b/termux/termux-emulator/src/main/jni/Android.mk @@ -1,5 +1,6 @@ LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE:= libtermux +LOCAL_LDFLAGS += -Wl,-z,max-page-size=16384 LOCAL_SRC_FILES:= termux.c include $(BUILD_SHARED_LIBRARY) diff --git a/termux/termux-shared/build.gradle.kts b/termux/termux-shared/build.gradle.kts index 42d4600bd2..5186b97669 100644 --- a/termux/termux-shared/build.gradle.kts +++ b/termux/termux-shared/build.gradle.kts @@ -9,6 +9,14 @@ android { namespace = "com.termux.shared" ndkVersion = BuildConfig.NDK_VERSION + defaultConfig { + externalNativeBuild { + ndkBuild { + ldFlags += arrayOf("-Wl,-z,max-page-size=16384") + } + } + } + externalNativeBuild { ndkBuild { path = file("src/main/cpp/Android.mk") diff --git a/termux/termux-shared/src/main/cpp/Android.mk b/termux/termux-shared/src/main/cpp/Android.mk index abc213c379..c072a3e02b 100644 --- a/termux/termux-shared/src/main/cpp/Android.mk +++ b/termux/termux-shared/src/main/cpp/Android.mk @@ -1,6 +1,7 @@ LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_LDLIBS := -llog +LOCAL_LDFLAGS += -Wl,-z,max-page-size=16384 LOCAL_MODULE := local-socket LOCAL_SRC_FILES := local-socket.cpp include $(BUILD_SHARED_LIBRARY) From 5b481415682ac3f5563842deefc23f608043afb8 Mon Sep 17 00:00:00 2001 From: Hal Eisen Date: Tue, 20 Jan 2026 17:41:31 -0800 Subject: [PATCH 2/2] Remove broken LDFLAGS --- termux/termux-emulator/build.gradle.kts | 2 +- termux/termux-shared/build.gradle.kts | 9 +-------- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/termux/termux-emulator/build.gradle.kts b/termux/termux-emulator/build.gradle.kts index a95e4e97b8..f962c19796 100644 --- a/termux/termux-emulator/build.gradle.kts +++ b/termux/termux-emulator/build.gradle.kts @@ -13,7 +13,7 @@ android { externalNativeBuild { ndkBuild { cFlags += arrayOf("-std=c11", "-Wall", "-Wextra", "-Werror", "-Os", "-fno-stack-protector", "-Wl,--gc-sections") - ldFlags += arrayOf("-Wl,-z,max-page-size=16384") + // Note: Linker flags for 16 KB alignment are set in Android.mk via LOCAL_LDFLAGS } } } diff --git a/termux/termux-shared/build.gradle.kts b/termux/termux-shared/build.gradle.kts index 5186b97669..a758de26f3 100644 --- a/termux/termux-shared/build.gradle.kts +++ b/termux/termux-shared/build.gradle.kts @@ -9,17 +9,10 @@ android { namespace = "com.termux.shared" ndkVersion = BuildConfig.NDK_VERSION - defaultConfig { - externalNativeBuild { - ndkBuild { - ldFlags += arrayOf("-Wl,-z,max-page-size=16384") - } - } - } - externalNativeBuild { ndkBuild { path = file("src/main/cpp/Android.mk") + // Note: Linker flags for 16 KB alignment are set in Android.mk via LOCAL_LDFLAGS } } }