Commit | Line | Data |
---|---|---|
fde18d47 FF |
1 | diff -u -r ../llvm-5.0.0.src/tools/clang/lib/Driver/ToolChains/Gnu.cpp ./tools/clang/lib/Driver/ToolChains/Gnu.cpp |
2 | --- ../llvm-5.0.0.src/tools/clang/lib/Driver/ToolChains/Gnu.cpp 2017-08-11 03:47:32.000000000 +0200 | |
3 | +++ ./tools/clang/lib/Driver/ToolChains/Gnu.cpp 2017-09-10 20:14:54.636653647 +0200 | |
4 | @@ -152,14 +152,11 @@ | |
5 | } | |
6 | } | |
7 | ||
8 | - const std::string &customGCCName = D.getCCCGenericGCCName(); | |
9 | - const char *GCCName; | |
10 | - if (!customGCCName.empty()) | |
11 | - GCCName = customGCCName.c_str(); | |
12 | - else if (D.CCCIsCXX()) { | |
13 | - GCCName = "g++"; | |
14 | - } else | |
15 | - GCCName = "gcc"; | |
16 | + // Termux modification: Disable calling into gcc from clang. | |
17 | + // Clang calls into gcc if it tries to compile a language it doesn't understand. | |
18 | + // On Termux gcc is a symlink to clang, so this leads into fork loop until | |
19 | + // the whole system runs out of memory. | |
20 | + const char *GCCName = "false"; | |
21 | ||
22 | const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath(GCCName)); | |
23 | C.addCommand(llvm::make_unique<Command>(JA, *this, Exec, CmdArgs, Inputs)); | |
24 | @@ -415,9 +412,12 @@ | |
25 | const llvm::Triple::ArchType Arch = ToolChain.getArch(); | |
26 | const bool isAndroid = ToolChain.getTriple().isAndroid(); | |
27 | const bool IsIAMCU = ToolChain.getTriple().isOSIAMCU(); | |
28 | + // Termux modification: Enable pie by default for Android | |
29 | + // and support the nopie flag. | |
30 | const bool IsPIE = | |
31 | !Args.hasArg(options::OPT_shared) && !Args.hasArg(options::OPT_static) && | |
32 | - (Args.hasArg(options::OPT_pie) || ToolChain.isPIEDefault()); | |
33 | + (Args.hasArg(options::OPT_pie) || ToolChain.isPIEDefault() || isAndroid) && | |
34 | + !Args.hasArg(options::OPT_nopie); | |
35 | const bool HasCRTBeginEndFiles = | |
36 | ToolChain.getTriple().hasEnvironment() || | |
37 | (ToolChain.getTriple().getVendor() != llvm::Triple::MipsTechnologies); |