Merge "Test updates to account for PAGE_SIZE change." into main
diff --git a/build/cmake/android-legacy.toolchain.cmake b/build/cmake/android-legacy.toolchain.cmake
index 252a199..1d4e179 100644
--- a/build/cmake/android-legacy.toolchain.cmake
+++ b/build/cmake/android-legacy.toolchain.cmake
@@ -457,10 +457,13 @@
-fstack-protector-strong
-no-canonical-prefixes)
-if(ANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES)
- list(APPEND ANDROID_COMPILER_FLAGS -D__BIONIC_NO_PAGE_SIZE_MACRO)
- if(ANDROID_ABI STREQUAL arm64-v8a OR ANDROID_ABI STREQUAL x86_64)
- list(APPEND ANDROID_LINKER_FLAGS -Wl,-z,max-page-size=16384)
+if(DEFINED ANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES)
+ if (ANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES)
+ if(ANDROID_ABI STREQUAL arm64-v8a OR ANDROID_ABI STREQUAL x86_64)
+ list(APPEND ANDROID_LINKER_FLAGS -Wl,-z,max-page-size=16384)
+ endif()
+ else()
+ list(APPEND ANDROID_COMPILER_FLAGS -D__BIONIC_DEPRECATED_PAGE_SIZE_MACRO)
endif()
endif()
diff --git a/build/cmake/flags.cmake b/build/cmake/flags.cmake
index 11acc04..3effe43 100644
--- a/build/cmake/flags.cmake
+++ b/build/cmake/flags.cmake
@@ -30,10 +30,13 @@
" -fstack-protector-strong"
" -no-canonical-prefixes")
-if(ANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES)
- string(APPEND _ANDROID_NDK_INIT_CFLAGS " -D__BIONIC_NO_PAGE_SIZE_MACRO")
- if(ANDROID_ABI STREQUAL arm64-v8a OR ANDROID_ABI STREQUAL x86_64)
- string(APPEND _ANDROID_NDK_INIT_LDFLAGS " -Wl,-z,max-page-size=16384")
+if(DEFINED ANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES)
+ if (ANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES)
+ if(ANDROID_ABI STREQUAL arm64-v8a OR ANDROID_ABI STREQUAL x86_64)
+ string(APPEND _ANDROID_NDK_INIT_LDFLAGS " -Wl,-z,max-page-size=16384")
+ endif()
+ else()
+ string(APPEND _ANDROID_NDK_INIT_CFLAGS " -D__BIONIC_DEPRECATED_PAGE_SIZE_MACRO")
endif()
endif()
diff --git a/build/core/build-binary.mk b/build/core/build-binary.mk
index 7940c66..171e451 100644
--- a/build/core/build-binary.mk
+++ b/build/core/build-binary.mk
@@ -132,8 +132,9 @@
#
LOCAL_CFLAGS := -DANDROID $(LOCAL_CFLAGS)
-ifeq ($(APP_SUPPORT_FLEXIBLE_PAGE_SIZES),true)
- LOCAL_CFLAGS += -D__BIONIC_NO_PAGE_SIZE_MACRO
+ifeq ($(APP_SUPPORT_FLEXIBLE_PAGE_SIZES),false)
+ LOCAL_CFLAGS += -D__BIONIC_DEPRECATED_PAGE_SIZE_MACRO
+else ifeq ($(APP_SUPPORT_FLEXIBLE_PAGE_SIZES),true)
ifneq (,$(filter $(APP_ABI),arm64-v8a x86_64))
LOCAL_LDFLAGS += -Wl,-z,max-page-size=16384
endif
diff --git a/docs/changelogs/Changelog-r28.md b/docs/changelogs/Changelog-r28.md
index cda64cf..9e22a14 100644
--- a/docs/changelogs/Changelog-r28.md
+++ b/docs/changelogs/Changelog-r28.md
@@ -14,3 +14,10 @@
## Announcements
## Changes
+
+* `PAGE_SIZE` is no longer defined by default for arm64-v8a or x86_64. To
+ re-enable, set `APP_SUPPORT_FLEXIBLE_PAGE_SIZES` (ndk-build) or
+ `ANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES` (CMake) to false. See [Support 16 KB
+ page sizes] for more information.
+
+[Support 16 KB page sizes]: https://developer.android.com/guide/practices/page-sizes
diff --git a/tests/build/alignment_default/test.py b/tests/build/alignment_default/test.py
index c5c4b75..6e05a35 100644
--- a/tests/build/alignment_default/test.py
+++ b/tests/build/alignment_default/test.py
@@ -61,7 +61,7 @@
return (
False,
f"LOAD section at {offset:x} has incorrect alignment {alignment:x}. "
- f"Expected {expected_alignment:x}",
+ f"Expected {expected_alignment:x} ({path})",
)
return True, None
diff --git a/tests/build/page_size_compat/jni/foo.cpp b/tests/build/page_size_compat/jni/foo.cpp
index 7b404e1..62d4d2f 100644
--- a/tests/build/page_size_compat/jni/foo.cpp
+++ b/tests/build/page_size_compat/jni/foo.cpp
@@ -1,5 +1,11 @@
#include <sys/user.h>
+#if defined(__arm__) || defined(__i386__)
+#if !defined(PAGE_SIZE)
+#error "PAGE_SIZE is not defined"
+#endif
+#else
#if defined(PAGE_SIZE)
-#error "PAGE_SIZE is defined and should not be"
+#error "PAGE_SIZE is defined but should not be"
+#endif
#endif
diff --git a/tests/build/page_size_default/jni/foo.cpp b/tests/build/page_size_default/jni/foo.cpp
index 96d34a6..62d4d2f 100644
--- a/tests/build/page_size_default/jni/foo.cpp
+++ b/tests/build/page_size_default/jni/foo.cpp
@@ -1,5 +1,11 @@
#include <sys/user.h>
+#if defined(__arm__) || defined(__i386__)
#if !defined(PAGE_SIZE)
#error "PAGE_SIZE is not defined"
#endif
+#else
+#if defined(PAGE_SIZE)
+#error "PAGE_SIZE is defined but should not be"
+#endif
+#endif
diff --git a/tests/build/page_size_legacy/CMakeLists.txt b/tests/build/page_size_legacy/CMakeLists.txt
new file mode 100644
index 0000000..7e7df62
--- /dev/null
+++ b/tests/build/page_size_legacy/CMakeLists.txt
@@ -0,0 +1,4 @@
+cmake_minimum_required(VERSION 3.22.1)
+project(PageSize LANGUAGES CXX)
+
+add_library(foo STATIC jni/foo.cpp)
diff --git a/tests/build/page_size_legacy/jni/Android.mk b/tests/build/page_size_legacy/jni/Android.mk
new file mode 100644
index 0000000..7ce18d5
--- /dev/null
+++ b/tests/build/page_size_legacy/jni/Android.mk
@@ -0,0 +1,6 @@
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := foo
+LOCAL_SRC_FILES := foo.cpp
+include $(BUILD_STATIC_LIBRARY)
diff --git a/tests/build/page_size_legacy/jni/Application.mk b/tests/build/page_size_legacy/jni/Application.mk
new file mode 100644
index 0000000..8ea6fda
--- /dev/null
+++ b/tests/build/page_size_legacy/jni/Application.mk
@@ -0,0 +1 @@
+APP_SUPPORT_FLEXIBLE_PAGE_SIZES := false
diff --git a/tests/build/page_size_legacy/jni/foo.cpp b/tests/build/page_size_legacy/jni/foo.cpp
new file mode 100644
index 0000000..96d34a6
--- /dev/null
+++ b/tests/build/page_size_legacy/jni/foo.cpp
@@ -0,0 +1,5 @@
+#include <sys/user.h>
+
+#if !defined(PAGE_SIZE)
+#error "PAGE_SIZE is not defined"
+#endif
diff --git a/tests/build/page_size_legacy/test_config.py b/tests/build/page_size_legacy/test_config.py
new file mode 100644
index 0000000..3169de2
--- /dev/null
+++ b/tests/build/page_size_legacy/test_config.py
@@ -0,0 +1,2 @@
+def extra_cmake_flags() -> list[str]:
+ return ["-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=OFF"]