| 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"); |