summaryrefslogtreecommitdiffstats
path: root/contrib/llvm/patches/patch-r262262-clang-r198918-sparc.diff
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/llvm/patches/patch-r262262-clang-r198918-sparc.diff')
-rw-r--r--contrib/llvm/patches/patch-r262262-clang-r198918-sparc.diff59
1 files changed, 59 insertions, 0 deletions
diff --git a/contrib/llvm/patches/patch-r262262-clang-r198918-sparc.diff b/contrib/llvm/patches/patch-r262262-clang-r198918-sparc.diff
new file mode 100644
index 0000000..a3c6026
--- /dev/null
+++ b/contrib/llvm/patches/patch-r262262-clang-r198918-sparc.diff
@@ -0,0 +1,59 @@
+Pull in r198918 from upstream clang trunk (by Jakob Stoklund Olesen):
+
+ Locate GCC installations on SPARC systems.
+
+Introduced here: http://svn.freebsd.org/changeset/base/262262
+
+Index: tools/clang/lib/Driver/ToolChains.cpp
+===================================================================
+--- tools/clang/lib/Driver/ToolChains.cpp
++++ tools/clang/lib/Driver/ToolChains.cpp
+@@ -1164,6 +1164,13 @@ void Generic_GCC::GCCInstallationDetector::print(r
+ "powerpc64le-suse-linux",
+ "ppc64le-redhat-linux" };
+
++ static const char *const SPARCv8LibDirs[] = { "/lib32", "/lib" };
++ static const char *const SPARCv8Triples[] = { "sparc-linux-gnu",
++ "sparcv8-linux-gnu" };
++ static const char *const SPARCv9LibDirs[] = { "/lib64", "/lib" };
++ static const char *const SPARCv9Triples[] = { "sparc64-linux-gnu",
++ "sparcv9-linux-gnu" };
++
+ static const char *const SystemZLibDirs[] = { "/lib64", "/lib" };
+ static const char *const SystemZTriples[] = {
+ "s390x-linux-gnu", "s390x-unknown-linux-gnu", "s390x-ibm-linux-gnu",
+@@ -1283,6 +1290,26 @@ void Generic_GCC::GCCInstallationDetector::print(r
+ TripleAliases.append(PPC64LETriples,
+ PPC64LETriples + llvm::array_lengthof(PPC64LETriples));
+ break;
++ case llvm::Triple::sparc:
++ LibDirs.append(SPARCv8LibDirs,
++ SPARCv8LibDirs + llvm::array_lengthof(SPARCv8LibDirs));
++ TripleAliases.append(SPARCv8Triples,
++ SPARCv8Triples + llvm::array_lengthof(SPARCv8Triples));
++ BiarchLibDirs.append(SPARCv9LibDirs,
++ SPARCv9LibDirs + llvm::array_lengthof(SPARCv9LibDirs));
++ BiarchTripleAliases.append(
++ SPARCv9Triples, SPARCv9Triples + llvm::array_lengthof(SPARCv9Triples));
++ break;
++ case llvm::Triple::sparcv9:
++ LibDirs.append(SPARCv9LibDirs,
++ SPARCv9LibDirs + llvm::array_lengthof(SPARCv9LibDirs));
++ TripleAliases.append(SPARCv9Triples,
++ SPARCv9Triples + llvm::array_lengthof(SPARCv9Triples));
++ BiarchLibDirs.append(SPARCv8LibDirs,
++ SPARCv8LibDirs + llvm::array_lengthof(SPARCv8LibDirs));
++ BiarchTripleAliases.append(
++ SPARCv8Triples, SPARCv8Triples + llvm::array_lengthof(SPARCv8Triples));
++ break;
+ case llvm::Triple::systemz:
+ LibDirs.append(SystemZLibDirs,
+ SystemZLibDirs + llvm::array_lengthof(SystemZLibDirs));
+@@ -1379,6 +1406,7 @@ static bool findTargetBiarchSuffix(std::string &Su
+ Suffix = "/n32";
+ else if (TargetArch == llvm::Triple::x86_64 ||
+ TargetArch == llvm::Triple::ppc64 ||
++ TargetArch == llvm::Triple::sparcv9 ||
+ TargetArch == llvm::Triple::systemz ||
+ TargetArch == llvm::Triple::mips64 ||
+ TargetArch == llvm::Triple::mips64el)
OpenPOWER on IntegriCloud