[PATCH] D55029: set default max-page-size to 4KB in lld for Android Aarch64

Zhizhou Yang via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Nov 28 14:28:26 PST 2018


zhizhouy created this revision.
zhizhouy added reviewers: srhines, danalbert, ruiu, chh.
Herald added subscribers: cfe-commits, kristof.beyls, javed.absar.

This patch passes an option '-z max-page-size=4096' to lld through clang driver.

This is for Android on Aarch64 target.

The lld default page size is too large for Aarch64, which produces larger .so files and images for arm64 device targets.
In this patch we set default page size to 4KB for Android Aarch64 targets instead.


Repository:
  rC Clang

https://reviews.llvm.org/D55029

Files:
  lib/Driver/ToolChains/Linux.cpp
  test/Driver/android-aarch64-link.cpp


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


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D55029.175771.patch
Type: text/x-patch
Size: 1370 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20181128/f1e0ae48/attachment.bin>


More information about the cfe-commits mailing list