diff -upNr a/llvm-3.0.src/tools/clang/lib/Driver/ToolChains.cpp b/llvm-3.0.src/tools/clang/lib/Driver/ToolChains.cpp --- a/llvm-3.0.src/tools/clang/lib/Driver/ToolChains.cpp 2012-05-23 15:39:01.070411000 -0400 +++ b/llvm-3.0.src/tools/clang/lib/Driver/ToolChains.cpp 2012-05-23 15:39:22.371785000 -0400 @@ -1382,6 +1382,7 @@ enum LinuxDistro { DebianSqueeze, DebianWheezy, Exherbo, + Gentoo, RHEL4, RHEL5, RHEL6, @@ -1403,6 +1404,10 @@ enum LinuxDistro { UnknownDistro }; +static bool IsGentoo(enum LinuxDistro Distro) { + return Distro == Gentoo; +} + static bool IsRedhat(enum LinuxDistro Distro) { return Distro == Fedora13 || Distro == Fedora14 || Distro == Fedora15 || Distro == FedoraRawhide || @@ -1433,7 +1438,9 @@ static LinuxDistro DetectLinuxDistro(llv SmallVector Lines; Data.split(Lines, "\n"); for (unsigned int i = 0, s = Lines.size(); i < s; ++ i) { - if (Lines[i] == "DISTRIB_CODENAME=hardy") + if (Lines[i] == "DISTRIB_ID=\"Gentoo\"") + return Gentoo; + else if (Lines[i] == "DISTRIB_CODENAME=hardy") return UbuntuHardy; else if (Lines[i] == "DISTRIB_CODENAME=intrepid") return UbuntuIntrepid; @@ -1597,6 +1604,9 @@ Linux::GCCInstallationDetector::GCCInsta GccInstallPath.append("/"); GccInstallPath.append(CXX_INCLUDE_ARCH); GccInstallPath.append("/"); + llvm::OwningPtr File; + if (!llvm::MemoryBuffer::getFile("/etc/env.d/gcc/config-" + D.DefaultHostTriple, File)) + Version = File.get()->getBuffer().rsplit('-').second.substr(0,5); GccInstallPath.append(Version); GccParentLibPath = GccInstallPath + "/../../.."; IsValid = true;