diff -Nurp cfe-3.5.0.src.orig/lib/Driver/ToolChains.cpp cfe-3.5.0.src/lib/Driver/ToolChains.cpp --- cfe-3.5.0.src.orig/lib/Driver/ToolChains.cpp 2014-08-27 23:07:31.000000000 +0300 +++ cfe-3.5.0.src/lib/Driver/ToolChains.cpp 2014-09-04 22:08:18.727929429 +0300 @@ -1335,8 +1335,8 @@ bool Generic_GCC::GCCInstallationDetecto static const char *const X86_64Triples[] = { "x86_64-linux-gnu", "x86_64-unknown-linux-gnu", "x86_64-pc-linux-gnu", "x86_64-redhat-linux6E", "x86_64-redhat-linux", "x86_64-suse-linux", - "x86_64-manbo-linux-gnu", "x86_64-linux-gnu", "x86_64-slackware-linux", - "x86_64-linux-android", "x86_64-unknown-linux" + "x86_64-mageia-linux-gnu", "x86_64-manbo-linux-gnu", "x86_64-linux-gnu", + "x86_64-slackware-linux", "x86_64-linux-android", "x86_64-unknown-linux" }; static const char *const X32LibDirs[] = { "/libx32" }; static const char *const X86LibDirs[] = { "/lib32", "/lib" }; @@ -1344,7 +1344,8 @@ bool Generic_GCC::GCCInstallationDetecto "i686-linux-gnu", "i686-pc-linux-gnu", "i486-linux-gnu", "i386-linux-gnu", "i386-redhat-linux6E", "i686-redhat-linux", "i586-redhat-linux", "i386-redhat-linux", "i586-suse-linux", "i486-slackware-linux", - "i686-montavista-linux", "i686-linux-android", "i586-linux-gnu" + "i586-mageia-linux-gnu", "i686-montavista-linux", "i686-linux-android", + "i586-linux-gnu" }; static const char *const MIPSLibDirs[] = { "/lib" }; @@ -2787,6 +2788,7 @@ enum Distro { RHEL5, RHEL6, Fedora, + Mageia, OpenSUSE, UbuntuHardy, UbuntuIntrepid, @@ -2808,6 +2810,10 @@ static bool IsRedhat(enum Distro Distro) return Distro == Fedora || (Distro >= RHEL4 && Distro <= RHEL6); } +static bool IsMageia(enum Distro Distro) { + return Distro == Mageia; +} + static bool IsOpenSUSE(enum Distro Distro) { return Distro == OpenSUSE; } @@ -2848,6 +2854,9 @@ static Distro DetectDistro(llvm::Triple: return Version; } + if (llvm::sys::fs::exists("/etc/mageia-release")) + return Mageia; + File = llvm::MemoryBuffer::getFile("/etc/redhat-release"); if (File) { StringRef Data = File.get()->getBuffer(); @@ -3062,7 +3071,7 @@ Linux::Linux(const Driver &D, const llvm // ABI requires a mapping between the GOT and the symbol table. // Android loader does not support .gnu.hash. if (!IsMips && !IsAndroid) { - if (IsRedhat(Distro) || IsOpenSUSE(Distro) || + if (IsMageia(Distro) || IsRedhat(Distro) || IsOpenSUSE(Distro) || (IsUbuntu(Distro) && Distro >= UbuntuMaverick)) ExtraOpts.push_back("--hash-style=gnu"); @@ -3071,11 +3080,11 @@ Linux::Linux(const Driver &D, const llvm ExtraOpts.push_back("--hash-style=both"); } - if (IsRedhat(Distro)) + if (IsMageia(Distro) || IsRedhat(Distro)) ExtraOpts.push_back("--no-add-needed"); if (Distro == DebianSqueeze || Distro == DebianWheezy || - Distro == DebianJessie || IsOpenSUSE(Distro) || + Distro == DebianJessie || IsOpenSUSE(Distro) || IsMageia(Distro) || (IsRedhat(Distro) && Distro != RHEL4 && Distro != RHEL5) || (IsUbuntu(Distro) && Distro >= UbuntuKarmic)) ExtraOpts.push_back("--build-id");