From 916572e1243633ddf913c8f32771a3a7f70fd853 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
Date: Fri, 5 Sep 2014 16:49:35 +0200
Subject: [PATCH] Support obtaining active toolchain from gcc-config.

---
 tools/clang/lib/Driver/ToolChains.cpp | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/tools/clang/lib/Driver/ToolChains.cpp b/tools/clang/lib/Driver/ToolChains.cpp
index b46f69d..2d4374d 100644
--- a/tools/clang/lib/Driver/ToolChains.cpp
+++ b/tools/clang/lib/Driver/ToolChains.cpp
@@ -1253,6 +1253,25 @@ Generic_GCC::GCCInstallationDetector::init(
       Prefixes.push_back("/usr");
   }
 
+  for (unsigned k = 0, ke = CandidateTripleAliases.size(); k < ke; ++k) {
+    llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>> File =
+        llvm::MemoryBuffer::getFile(D.SysRoot + "/etc/env.d/gcc/config-" + CandidateTripleAliases[k].str());
+    if (File)
+    {
+      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"))
+      {
+        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");
-- 
2.1.0

