Author: Fangrui Song Date: 2020-04-08T12:05:28-07:00 New Revision: 969b91af732d83870bb17e1e0ca0202fe4b89965
URL: https://github.com/llvm/llvm-project/commit/969b91af732d83870bb17e1e0ca0202fe4b89965 DIFF: https://github.com/llvm/llvm-project/commit/969b91af732d83870bb17e1e0ca0202fe4b89965.diff LOG: [Driver] Default arm-linux-androideabi to -z max-page-size=4096 Similar to D55029. The requirement arises when discussing increasing default max-page-size for lld ARM (D77330). For the record, the default max-page-size on the 3 commonly used linkers: * GNU ld since 2014 (https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=7572ca8989ead4c3425a1500bc241eaaeffa2c89) defaults to 65536 * GNU gold remains 4096 * lld<=10 uses 4096. lld from 11 onwards will use 65536 (D77330) Reviewed By: srhines, thieta Differential Revision: https://reviews.llvm.org/D77746 Added: clang/test/Driver/android-link.cpp Modified: clang/lib/Driver/ToolChains/Linux.cpp Removed: clang/test/Driver/android-aarch64-link.cpp ################################################################################ diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp index 3d76e6801149..788b089351d4 100644 --- a/clang/lib/Driver/ToolChains/Linux.cpp +++ b/clang/lib/Driver/ToolChains/Linux.cpp @@ -253,10 +253,9 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args) 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()) { + // Android ARM/AArch64 use max-page-size=4096 to reduce VMA usage. Note, lld + // from 11 onwards default max-page-size to 65536 for both ARM and AArch64. + if ((Triple.isARM() || Triple.isAArch64()) && Triple.isAndroid()) { ExtraOpts.push_back("-z"); ExtraOpts.push_back("max-page-size=4096"); } diff --git a/clang/test/Driver/android-aarch64-link.cpp b/clang/test/Driver/android-link.cpp similarity index 75% rename from clang/test/Driver/android-aarch64-link.cpp rename to clang/test/Driver/android-link.cpp index 051bcd57b17b..fa9cbc5d0c7a 100644 --- a/clang/test/Driver/android-aarch64-link.cpp +++ b/clang/test/Driver/android-link.cpp @@ -1,4 +1,7 @@ -// Check that we automatically add relevant linker flags for Android aarch64. +// Check that we add relevant linker flags for Android ARM/AArch64. + +// RUN: %clang -### -target arm-linux-androideabi %s 2>&1 | \ +// RUN: FileCheck --check-prefix=MAX-PAGE-SIZE %s // RUN: %clang -target aarch64-none-linux-android \ // RUN: -### -v %s 2> %t @@ -19,4 +22,4 @@ // 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 +// MAX-PAGE-SIZE: "-z" "max-page-size=4096" _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits