diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp index 6c2f23e57bce05..fb65881061effc 100644 --- a/clang/lib/Driver/ToolChains/Linux.cpp +++ b/clang/lib/Driver/ToolChains/Linux.cpp @@ -244,8 +244,9 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args) // Android ARM uses max-page-size=4096 to reduce VMA usage. ExtraOpts.push_back("-z"); ExtraOpts.push_back("max-page-size=4096"); - } else if (Triple.isAArch64()) { + } else if (Triple.isAArch64() || Triple.getArch() == llvm::Triple::x86_64) { // Android AArch64 uses max-page-size=16384 to support 4k/16k page sizes. + // Android emulates a 16k page size for app testing on x86_64 machines. ExtraOpts.push_back("-z"); ExtraOpts.push_back("max-page-size=16384"); } diff --git a/clang/test/Driver/android-link.cpp b/clang/test/Driver/android-link.cpp index f9bdd00507d7bc..ab7dae54055873 100644 --- a/clang/test/Driver/android-link.cpp +++ b/clang/test/Driver/android-link.cpp @@ -1,26 +1,36 @@ -// Check that we add relevant linker flags for Android ARM/AArch64. +// Check that we add relevant linker flags for Android ARM/AArch64/i386/x86_64. -// RUN: %clang -### -target arm-linux-androideabi %s 2>&1 | \ -// RUN: FileCheck --check-prefix=MAX-PAGE-SIZE %s +// RUN: %clang -### --target=arm-linux-androideabi %s 2>&1 | \ +// RUN: FileCheck --check-prefix=MAX-PAGE-SIZE-4KB %s -// RUN: %clang -target aarch64-none-linux-android \ +// RUN: %clang --target=aarch64-none-linux-android \ // RUN: -### -v %s 2> %t // RUN: FileCheck -check-prefix=GENERIC-ARM < %t %s -// -// RUN: %clang -target aarch64-none-linux-android \ + +// RUN: %clang --target=aarch64-none-linux-android \ // RUN: -mcpu=cortex-a53 -### -v %s 2> %t // RUN: FileCheck -check-prefix=CORTEX-A53 < %t %s -// -// RUN: %clang -target aarch64-none-linux-android \ + +// RUN: %clang --target=aarch64-none-linux-android \ // RUN: -mcpu=cortex-a57 -### -v %s 2> %t // RUN: FileCheck -check-prefix=CORTEX-A57 < %t %s -// -// RUN: %clang -target aarch64-none-linux-android \ + +// RUN: %clang --target=aarch64-none-linux-android \ // RUN: -### -v %s 2> %t -// RUN: FileCheck -check-prefix=MAX-PAGE-SIZE-AARCH64 < %t %s -// +// RUN: FileCheck -check-prefix=MAX-PAGE-SIZE-16KB < %t %s + +// RUN: %clang -### --target=i386-none-linux-android %s 2>&1 | \ +// RUN: FileCheck --check-prefix=NO-MAX-PAGE-SIZE-16KB %s + +// RUN: %clang -### --target=x86_64-none-linux-gnu %s 2>&1 | \ +// RUN: FileCheck --check-prefix=NO-MAX-PAGE-SIZE-16KB %s + +// RUN: %clang -### --target=x86_64-none-linux-android %s 2>&1 | \ +// RUN: FileCheck --check-prefix=MAX-PAGE-SIZE-16KB %s + // GENERIC-ARM: --fix-cortex-a53-843419 // CORTEX-A53: --fix-cortex-a53-843419 // CORTEX-A57-NOT: --fix-cortex-a53-843419 -// MAX-PAGE-SIZE: "-z" "max-page-size=4096" -// MAX-PAGE-SIZE-AARCH64: "-z" "max-page-size=16384" +// MAX-PAGE-SIZE-4KB: "-z" "max-page-size=4096" +// MAX-PAGE-SIZE-16KB: "-z" "max-page-size=16384" +// NO-MAX-PAGE-SIZE-16KB-NOT: "-z" "max-page-size=16384"