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"]