-diff -u -r ../llvm-3.8.0.src/tools/clang/lib/Driver/Tools.cpp ./tools/clang/lib/Driver/Tools.cpp
---- ../llvm-3.8.0.src/tools/clang/lib/Driver/Tools.cpp 2016-02-12 17:51:41.000000000 -0500
-+++ ./tools/clang/lib/Driver/Tools.cpp 2016-05-01 23:01:30.148998957 -0400
+diff -u -r ../llvm-3.8.1.src/tools/clang/lib/Driver/Tools.cpp ./tools/clang/lib/Driver/Tools.cpp
+--- ../llvm-3.8.1.src/tools/clang/lib/Driver/Tools.cpp 2016-02-12 17:51:41.000000000 -0500
++++ ./tools/clang/lib/Driver/Tools.cpp 2016-08-18 10:00:30.287138752 -0400
@@ -733,11 +733,11 @@
ABI = FloatABI::SoftFP;
break;
if (Triple.getOS() != llvm::Triple::UnknownOS ||
!Triple.isOSBinFormatMachO())
D.Diag(diag::warn_drv_assuming_mfloat_abi_is) << "soft";
+@@ -8773,9 +8773,18 @@
+
+ const llvm::Triple::ArchType Arch = ToolChain.getArch();
+ const bool isAndroid = ToolChain.getTriple().isAndroid();
+ const bool IsPIE =
+ !Args.hasArg(options::OPT_shared) && !Args.hasArg(options::OPT_static) &&
+- (Args.hasArg(options::OPT_pie) || ToolChain.isPIEDefault());
++ (Args.hasArg(options::OPT_pie) || ToolChain.isPIEDefault()
++ /* Termux modification: Revert
++ http://lists.llvm.org/pipermail/cfe-commits/Week-of-Mon-20150302/124624.html
++ as we really want pie by default: */
++ // 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_nopie);
++
+ const bool HasCRTBeginEndFiles =
+ ToolChain.getTriple().hasEnvironment() ||
+ (ToolChain.getTriple().getVendor() != llvm::Triple::MipsTechnologies);