Blob Blame History Raw
--- a/tools/clang/lib/Driver/ToolChains.cpp	2014-04-26 01:38:13.000000000 +0200
+++ b/tools/clang/lib/Driver/ToolChains.cpp	2014-12-08 23:57:22.467764790 +0100
@@ -2175,6 +2180,7 @@
   RHEL4,
   RHEL5,
   RHEL6,
+  RHEL7,
   Fedora,
   OpenSUSE,
   UbuntuHardy,
@@ -2194,7 +2200,7 @@
 };
 
 static bool IsRedhat(enum Distro Distro) {
-  return Distro == Fedora || (Distro >= RHEL4 && Distro <= RHEL6);
+  return Distro == Fedora || (Distro >= RHEL4 && Distro <= RHEL7);
 }
 
 static bool IsOpenSUSE(enum Distro Distro) {
@@ -2233,22 +2239,32 @@
           .Case("saucy", UbuntuSaucy)
           .Case("trusty", UbuntuTrusty)
           .Default(UnknownDistro);
-    return Version;
+    if (Version != UnknownDistro)
+		return Version;
   }
 
   if (!llvm::MemoryBuffer::getFile("/etc/redhat-release", File)) {
     StringRef Data = File.get()->getBuffer();
     if (Data.startswith("Fedora release"))
       return Fedora;
-    else if (Data.startswith("Red Hat Enterprise Linux") &&
+    else if ((Data.startswith("Red Hat Enterprise Linux") ||
+              Data.startswith("CentOS") ||
+              Data.startswith("Scientific Linux")) &&
+             Data.find("release 7") != StringRef::npos)
+      return RHEL7;
+    else if ((Data.startswith("Red Hat Enterprise Linux") ||
+              Data.startswith("CentOS") ||
+             Data.startswith("Scientific Linux")) &&
              Data.find("release 6") != StringRef::npos)
       return RHEL6;
     else if ((Data.startswith("Red Hat Enterprise Linux") ||
-              Data.startswith("CentOS")) &&
+              Data.startswith("CentOS") ||
+              Data.startswith("Scientific Linux")) &&
              Data.find("release 5") != StringRef::npos)
       return RHEL5;
     else if ((Data.startswith("Red Hat Enterprise Linux") ||
-              Data.startswith("CentOS")) &&
+              Data.startswith("CentOS") ||
+              Data.startswith("Scientific Linux")) &&
              Data.find("release 4") != StringRef::npos)
       return RHEL4;
     return UnknownDistro;
@@ -2424,7 +2440,7 @@
       ExtraOpts.push_back("--hash-style=both");
   }
 
-  if (IsRedhat(Distro))
+  if (Distro == Fedora || Distro == RHEL7)
     ExtraOpts.push_back("--no-add-needed");
 
   if (Distro == DebianSqueeze || Distro == DebianWheezy ||