Pass -pie to linker when generating executable on Android

This fixes problem with LTO on Android.

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

llvm-svn: 207520
This commit is contained in:
Alexey Volkov 2014-04-29 10:25:20 +00:00
parent aacce57d61
commit 0692103653
2 changed files with 9 additions and 1 deletions

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

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