forked from OSchip/llvm-project
Don't force -pie for Android.
Summary: There is no -no-pie flag that can override this, so making it default to being on for Android means it is no longer possible to create non-PIE executables on Android. While current versions of Android support (and the most recent requires) PIE, ICS and earlier versions of Android cannot run PIE executables, so this needs to be optional. Reviewers: srhines Reviewed By: srhines Subscribers: thakis, volkalexey, cfe-commits Differential Revision: http://reviews.llvm.org/D8015 llvm-svn: 231091
This commit is contained in:
parent
675cffcb91
commit
77214a4498
|
@ -7576,11 +7576,7 @@ void gnutools::Link::ConstructJob(Compilation &C, const JobAction &JA,
|
|||
const bool IsPIE =
|
||||
!Args.hasArg(options::OPT_shared) &&
|
||||
!Args.hasArg(options::OPT_static) &&
|
||||
(Args.hasArg(options::OPT_pie) || ToolChain.isPIEDefault() ||
|
||||
// On Android every code is PIC so every executable is PIE
|
||||
// Cannot use isPIEDefault here since otherwise
|
||||
// PIE only logic will be enabled during compilation
|
||||
isAndroid);
|
||||
(Args.hasArg(options::OPT_pie) || ToolChain.isPIEDefault());
|
||||
|
||||
ArgStringList CmdArgs;
|
||||
|
||||
|
|
|
@ -22,5 +22,4 @@
|
|||
//
|
||||
// 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"
|
||||
|
|
|
@ -1093,6 +1093,31 @@
|
|||
// CHECK-ANDROID-PIE: "{{.*}}{{/|\\\\}}crtend_android.o"
|
||||
// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
|
||||
// RUN: --target=arm-linux-androideabi \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-ANDROID-NO-DEFAULT-PIE %s
|
||||
// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
|
||||
// RUN: --target=arm-linux-android \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-ANDROID-NO-DEFAULT-PIE %s
|
||||
// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
|
||||
// RUN: --target=aarch64-linux-android \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-ANDROID-NO-DEFAULT-PIE %s
|
||||
// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
|
||||
// RUN: --target=arm64-linux-android \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-ANDROID-NO-DEFAULT-PIE %s
|
||||
// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
|
||||
// RUN: --target=mipsel-linux-android \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-ANDROID-NO-DEFAULT-PIE %s
|
||||
// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
|
||||
// RUN: --target=mips64el-linux-android \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-ANDROID-NO-DEFAULT-PIE %s
|
||||
// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
|
||||
// RUN: --target=i686-linux-android \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-ANDROID-NO-DEFAULT-PIE %s
|
||||
// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
|
||||
// RUN: --target=x86_64-linux-android \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-ANDROID-NO-DEFAULT-PIE %s
|
||||
// CHECK-ANDROID-NO-DEFAULT-PIE-NOT: -pie
|
||||
// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
|
||||
// RUN: --target=arm-linux-androideabi \
|
||||
// RUN: --gcc-toolchain="" \
|
||||
// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-ANDROID-32 %s
|
||||
|
|
Loading…
Reference in New Issue