diff -Naur clang-9.0.1.src-orig/include/clang/Driver/Distro.h clang-9.0.1.src/include/clang/Driver/Distro.h --- clang-9.0.1.src-orig/include/clang/Driver/Distro.h 2019-12-11 22:15:30.000000000 +0300 +++ clang-9.0.1.src/include/clang/Driver/Distro.h 2020-02-14 19:46:31.781378040 +0300 @@ -38,8 +38,10 @@ RHEL5, RHEL6, RHEL7, + ROSA, Fedora, Gentoo, + OpenMandriva, OpenSUSE, UbuntuHardy, UbuntuIntrepid, @@ -109,6 +111,10 @@ return DistroVal == Fedora || (DistroVal >= RHEL5 && DistroVal <= RHEL7); } + bool IsROSA() { + return DistroVal == ROSA; + } + bool IsOpenSUSE() const { return DistroVal == OpenSUSE; } @@ -129,6 +135,9 @@ return DistroVal == Gentoo; } + bool IsMandriva() const { + return DistroVal == OpenMandriva; + } /// @} }; diff -Naur clang-9.0.1.src-orig/lib/Driver/Distro.cpp clang-9.0.1.src/lib/Driver/Distro.cpp --- clang-9.0.1.src-orig/lib/Driver/Distro.cpp 2019-12-11 22:15:30.000000000 +0300 +++ clang-9.0.1.src/lib/Driver/Distro.cpp 2020-02-14 19:50:25.775772017 +0300 @@ -57,6 +57,10 @@ return Version; } + File = VFS.getBufferForFile("/etc/rosa-release"); + if (File) + return Distro::ROSA; + File = VFS.getBufferForFile("/etc/redhat-release"); if (File) { StringRef Data = File.get()->getBuffer(); diff -Naur clang-9.0.1.src-orig/lib/Driver/ToolChains/Gnu.cpp clang-9.0.1.src/lib/Driver/ToolChains/Gnu.cpp --- clang-9.0.1.src-orig/lib/Driver/ToolChains/Gnu.cpp 2019-12-11 22:15:30.000000000 +0300 +++ clang-9.0.1.src/lib/Driver/ToolChains/Gnu.cpp 2020-02-14 19:19:59.341584610 +0300 @@ -1927,7 +1927,9 @@ static const char *const AArch64LibDirs[] = {"/lib64", "/lib"}; static const char *const AArch64Triples[] = { "aarch64-none-linux-gnu", "aarch64-linux-gnu", "aarch64-redhat-linux", - "aarch64-suse-linux", "aarch64-linux-android"}; + "aarch64-suse-linux", "aarch64-linux-android", "aarch64-mandriva-linux-gnu", + "aarch64-openmandriva-linux-gnu", "aarch64-openmandriva-linux-musl", + "aarch64-rosa-linux-gnu", "aarch64-rosa-linux-musl"}; static const char *const AArch64beLibDirs[] = {"/lib"}; static const char *const AArch64beTriples[] = {"aarch64_be-none-linux-gnu", "aarch64_be-linux-gnu"}; @@ -1937,6 +1939,8 @@ "arm-linux-androideabi"}; static const char *const ARMHFTriples[] = {"arm-linux-gnueabihf", "armv7hl-redhat-linux-gnueabi", + "armv7hl-rosa-linux-gnueabi", + "armv7hl-openmandriva-linux-gnueabihf", "armv6hl-suse-linux-gnueabi", "armv7hl-suse-linux-gnueabi"}; static const char *const ARMebLibDirs[] = {"/lib"}; @@ -1955,7 +1959,8 @@ "x86_64-redhat-linux", "x86_64-suse-linux", "x86_64-manbo-linux-gnu", "x86_64-linux-gnu", "x86_64-slackware-linux", "x86_64-unknown-linux", - "x86_64-amazon-linux", "x86_64-linux-android"}; + "x86_64-amazon-linux", "x86_64-linux-android", + "x86_64-rosa-linux-gnu", "x86_64-openmandriva-linux-gnu"}; static const char *const X32LibDirs[] = {"/libx32"}; static const char *const X86LibDirs[] = {"/lib32", "/lib"}; static const char *const X86Triples[] = { @@ -1964,7 +1969,9 @@ "i586-redhat-linux", "i386-redhat-linux", "i586-suse-linux", "i486-slackware-linux", "i686-montavista-linux", "i586-linux-gnu", "i686-linux-android", "i386-gnu", "i486-gnu", - "i586-gnu", "i686-gnu"}; + "i586-gnu", "i686-gnu", "i586-unknown-linux-gnu", + "i586-rosa-linux-gnu", "i686-rosa-linux-gnu", "i586-openmandriva-linux-gnu", + "i686-openmandriva-linux-gnu"}; static const char *const MIPSLibDirs[] = {"/lib"}; static const char *const MIPSTriples[] = { diff -Naur clang-9.0.1.src-orig/lib/Driver/ToolChains/Linux.cpp clang-9.0.1.src/lib/Driver/ToolChains/Linux.cpp --- clang-9.0.1.src-orig/lib/Driver/ToolChains/Linux.cpp 2019-12-11 22:15:30.000000000 +0300 +++ clang-9.0.1.src/lib/Driver/ToolChains/Linux.cpp 2020-02-14 19:35:44.855908872 +0300 @@ -248,7 +248,7 @@ } if (Distro.IsOpenSUSE() || Distro.IsUbuntu() || Distro.IsAlpineLinux() || - Triple.isAndroid()) { + Distro.IsROSA() || Distro.IsMandriva() || Triple.isAndroid()) { ExtraOpts.push_back("-z"); ExtraOpts.push_back("relro"); } @@ -289,6 +289,7 @@ // Hexagon linker/loader does not support .gnu.hash if (!IsMips && !IsHexagon) { if (Distro.IsRedhat() || Distro.IsOpenSUSE() || Distro.IsAlpineLinux() || + Distro.IsROSA() || Distro.IsMandriva() || (Distro.IsUbuntu() && Distro >= Distro::UbuntuMaverick) || (IsAndroid && !Triple.isAndroidVersionLT(23))) ExtraOpts.push_back("--hash-style=gnu"); @@ -304,7 +305,7 @@ ExtraOpts.push_back("--build-id"); #endif - if (IsAndroid || Distro.IsOpenSUSE()) + if (IsAndroid || Distro.IsOpenSUSE() || Distro.IsMandriva() || Distro.IsROSA()) ExtraOpts.push_back("--enable-new-dtags"); // The selection of paths to try here is designed to match the patterns which