30 lines
1.4 KiB
Diff
30 lines
1.4 KiB
Diff
diff -upNr a/llvm-3.1.src/tools/clang/lib/Driver/ToolChains.cpp b/llvm-3.1.src/tools/clang/lib/Driver/ToolChains.cpp
|
|
--- a/llvm-3.1.src/tools/clang/lib/Driver/ToolChains.cpp 2012-05-24 03:32:31.593191000 -0400
|
|
+++ b/llvm-3.1.src/tools/clang/lib/Driver/ToolChains.cpp 2012-05-24 03:38:31.733163513 -0400
|
|
@@ -1145,6 +1145,25 @@ Generic_GCC::GCCInstallationDetector::GC
|
|
Prefixes.push_back(D.InstalledDir + "/..");
|
|
}
|
|
|
|
+ llvm::OwningPtr<llvm::MemoryBuffer> File;
|
|
+ for (unsigned k = 0, ke = CandidateTripleAliases.size(); k < ke; ++k) {
|
|
+ if (!llvm::MemoryBuffer::getFile(D.SysRoot + "/etc/env.d/gcc/config-" + CandidateTripleAliases[k].str(), File))
|
|
+ {
|
|
+ bool Exists;
|
|
+ const std::string VersionText = File.get()->getBuffer().rsplit('-').second.substr(0,5).str();
|
|
+ const std::string GentooPath = D.SysRoot + "/usr/lib/gcc/" + CandidateTripleAliases[k].str() + "/" + VersionText;
|
|
+ if (!llvm::sys::fs::exists(GentooPath + "/crtbegin.o", Exists) && Exists)
|
|
+ {
|
|
+ Version = GCCVersion::Parse(VersionText);
|
|
+ GCCInstallPath = GentooPath;
|
|
+ GCCParentLibPath = GCCInstallPath + "/../../..";
|
|
+ GCCTriple.setTriple(CandidateTripleAliases[k]);
|
|
+ IsValid = true;
|
|
+ return;
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+
|
|
// Loop over the various components which exist and select the best GCC
|
|
// installation available. GCC installs are ranked by version number.
|
|
Version = GCCVersion::Parse("0.0.0");
|