]> granicus.if.org Git - clang/commitdiff
Pass -pie to linker when generating executable on Android
authorAlexey Volkov <avolkov.intel@gmail.com>
Tue, 29 Apr 2014 10:25:20 +0000 (10:25 +0000)
committerAlexey Volkov <avolkov.intel@gmail.com>
Tue, 29 Apr 2014 10:25:20 +0000 (10:25 +0000)
This fixes problem with LTO on Android.

Differential Revision: http://reviews.llvm.org/D2668

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@207520 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Driver/Tools.cpp
test/Driver/gold-lto.c

index a8d3f010bd08db29bfc810509e24fcda3f0e3a99..bda4edfd07c947e3a5a0ff2b4e761d98838d9799 100644 (file)
@@ -6917,7 +6917,10 @@ void gnutools::Link::ConstructJob(Compilation &C, const JobAction &JA,
     ToolChain.getTriple().getEnvironment() == llvm::Triple::Android;
   const bool IsPIE =
     !Args.hasArg(options::OPT_shared) &&
-    (Args.hasArg(options::OPT_pie) || ToolChain.isPIEDefault());
+    !Args.hasArg(options::OPT_static) &&
+    (Args.hasArg(options::OPT_pie) || ToolChain.isPIEDefault() ||
+     // On Android every code is PIC so every executable is PIE
+     isAndroid);
 
   ArgStringList CmdArgs;
 
index c2e8bdfbc74758d6336a789d02a118f17ea8a37a..18a293b6960ea70bc8f68f1206aa6f36ea360cd1 100644 (file)
@@ -19,3 +19,8 @@
 // CHECK-ARM-V7A: "-plugin" "{{.*}}/LLVMgold.so"
 // CHECK-ARM-V7A: "-plugin-opt=mcpu=cortex-a8"
 // CHECK-ARM-V7A: "-plugin-opt=foo"
+//
+// RUN: %clang -target i686-linux-android -### %t.o -flto 2>&1 \
+// RUN:     | FileCheck %s --check-prefix=CHECK-X86-ANDROID
+// CHECK-X86-ANDROID: "-pie"
+// CHECK-X86-ANDROID: "-plugin" "{{.*}}/LLVMgold.so"