clang: Support -nopie flag
[termux-packages] / packages / clang / tools-clang-lib-Driver-Tools.cpp.patch
CommitLineData
9cbdadb1
FF
1diff -u -r ../llvm-3.8.1.src/tools/clang/lib/Driver/Tools.cpp ./tools/clang/lib/Driver/Tools.cpp
2--- ../llvm-3.8.1.src/tools/clang/lib/Driver/Tools.cpp 2016-02-12 17:51:41.000000000 -0500
3+++ ./tools/clang/lib/Driver/Tools.cpp 2016-08-18 10:00:30.287138752 -0400
0b371c42
FF
4@@ -733,11 +733,11 @@
5 ABI = FloatABI::SoftFP;
6 break;
7 case llvm::Triple::Android:
8- ABI = (SubArch == 7) ? FloatABI::SoftFP : FloatABI::Soft;
f48d46dd 9+ ABI = FloatABI::SoftFP;
0b371c42
FF
10 break;
11 default:
12 // Assume "soft", but warn the user we are guessing.
13- ABI = FloatABI::Soft;
f48d46dd 14+ ABI = FloatABI::SoftFP;
0b371c42
FF
15 if (Triple.getOS() != llvm::Triple::UnknownOS ||
16 !Triple.isOSBinFormatMachO())
17 D.Diag(diag::warn_drv_assuming_mfloat_abi_is) << "soft";
9cbdadb1
FF
18@@ -8773,9 +8773,18 @@
19
20 const llvm::Triple::ArchType Arch = ToolChain.getArch();
21 const bool isAndroid = ToolChain.getTriple().isAndroid();
22 const bool IsPIE =
23 !Args.hasArg(options::OPT_shared) && !Args.hasArg(options::OPT_static) &&
24- (Args.hasArg(options::OPT_pie) || ToolChain.isPIEDefault());
25+ (Args.hasArg(options::OPT_pie) || ToolChain.isPIEDefault()
26+ /* Termux modification: Revert
27+ http://lists.llvm.org/pipermail/cfe-commits/Week-of-Mon-20150302/124624.html
28+ as we really want pie by default: */
29+ // On Android every code is PIC so every executable is PIE
30+ // Cannot use isPIEDefault here since otherwise
31+ // PIE only logic will be enabled during compilation
32+ || isAndroid)
33+ && !Args.hasArg(options::OPT_nopie);
34+
35 const bool HasCRTBeginEndFiles =
36 ToolChain.getTriple().hasEnvironment() ||
37 (ToolChain.getTriple().getVendor() != llvm::Triple::MipsTechnologies);