summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'sys-devel/clang/files/clang-3.0-linux-runtime-gcc-detection.patch')
-rw-r--r--sys-devel/clang/files/clang-3.0-linux-runtime-gcc-detection.patch43
1 files changed, 43 insertions, 0 deletions
diff --git a/sys-devel/clang/files/clang-3.0-linux-runtime-gcc-detection.patch b/sys-devel/clang/files/clang-3.0-linux-runtime-gcc-detection.patch
new file mode 100644
index 000000000000..a1f7ce2a98fb
--- /dev/null
+++ b/sys-devel/clang/files/clang-3.0-linux-runtime-gcc-detection.patch
@@ -0,0 +1,43 @@
+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<StringRef, 8> 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<llvm::MemoryBuffer> 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;