Index: lib/Driver/ToolChains/Linux.cpp =================================================================== --- lib/Driver/ToolChains/Linux.cpp +++ lib/Driver/ToolChains/Linux.cpp @@ -247,6 +247,14 @@ ExtraOpts.push_back("relro"); } + // The lld default page size is too large for Aarch64, which produces much + // larger .so files and images for arm64 device targets. Use 4KB page size + // for Android arm64 targets instead. + if (Triple.isAArch64() && Triple.isAndroid()) { + ExtraOpts.push_back("-z"); + ExtraOpts.push_back("max-page-size=4096"); + } + if (GCCInstallation.getParentLibPath().find("opt/rh/devtoolset") != StringRef::npos) // With devtoolset on RHEL, we want to add a bin directory that is relative Index: test/Driver/android-aarch64-link.cpp =================================================================== --- test/Driver/android-aarch64-link.cpp +++ test/Driver/android-aarch64-link.cpp @@ -12,6 +12,11 @@ // RUN: -mcpu=cortex-a57 -### -v %s 2> %t // RUN: FileCheck -check-prefix=CORTEX-A57 < %t %s // +// RUN: %clang -target aarch64-none-linux-android \ +// RUN: -### -v %s 2> %t +// RUN: FileCheck -check-prefix=MAX-PAGE-SIZE < %t %s +// // GENERIC-ARM: --fix-cortex-a53-843419 // CORTEX-A53: --fix-cortex-a53-843419 // CORTEX-A57-NOT: --fix-cortex-a53-843419 +// MAX-PAGE-SIZE: max-page-size=4096