summaryrefslogtreecommitdiffstats
path: root/contrib/llvm/patches/patch-r262262-clang-r198923-sparc.diff
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/llvm/patches/patch-r262262-clang-r198923-sparc.diff')
-rw-r--r--contrib/llvm/patches/patch-r262262-clang-r198923-sparc.diff49
1 files changed, 49 insertions, 0 deletions
diff --git a/contrib/llvm/patches/patch-r262262-clang-r198923-sparc.diff b/contrib/llvm/patches/patch-r262262-clang-r198923-sparc.diff
new file mode 100644
index 0000000..912aa62
--- /dev/null
+++ b/contrib/llvm/patches/patch-r262262-clang-r198923-sparc.diff
@@ -0,0 +1,49 @@
+Pull in r198923 from upstream clang trunk (by Jakob Stoklund Olesen):
+
+ Use the right dynamic linker for SPARC Linux executables.
+
+Introduced here: http://svn.freebsd.org/changeset/base/262262
+
+Index: tools/clang/lib/Driver/Tools.cpp
+===================================================================
+--- tools/clang/lib/Driver/Tools.cpp
++++ tools/clang/lib/Driver/Tools.cpp
+@@ -6374,7 +6374,8 @@ static StringRef getLinuxDynamicLinker(const ArgLi
+ const toolchains::Linux &ToolChain) {
+ if (ToolChain.getTriple().getEnvironment() == llvm::Triple::Android)
+ return "/system/bin/linker";
+- else if (ToolChain.getArch() == llvm::Triple::x86)
++ else if (ToolChain.getArch() == llvm::Triple::x86 ||
++ ToolChain.getArch() == llvm::Triple::sparc)
+ return "/lib/ld-linux.so.2";
+ else if (ToolChain.getArch() == llvm::Triple::aarch64)
+ return "/lib/ld-linux-aarch64.so.1";
+@@ -6399,6 +6400,8 @@ static StringRef getLinuxDynamicLinker(const ArgLi
+ ToolChain.getArch() == llvm::Triple::ppc64le ||
+ ToolChain.getArch() == llvm::Triple::systemz)
+ return "/lib64/ld64.so.1";
++ else if (ToolChain.getArch() == llvm::Triple::sparcv9)
++ return "/lib64/ld-linux.so.2";
+ else
+ return "/lib64/ld-linux-x86-64.so.2";
+ }
+Index: tools/clang/test/Driver/linux-ld.c
+===================================================================
+--- tools/clang/test/Driver/linux-ld.c
++++ tools/clang/test/Driver/linux-ld.c
+@@ -389,6 +389,7 @@
+ // RUN: | FileCheck --check-prefix=CHECK-SPARCV8 %s
+ // CHECK-SPARCV8: "{{.*}}ld{{(.exe)?}}"
+ // CHECK-SPARCV8: "-m" "elf32_sparc"
++// CHECK-SPARCV8: "-dynamic-linker" "/lib/ld-linux.so.2"
+ //
+ // RUN: %clang %s -### -o %t.o 2>&1 \
+ // RUN: --target=sparcv9-linux-gnu \
+@@ -395,6 +396,7 @@
+ // RUN: | FileCheck --check-prefix=CHECK-SPARCV9 %s
+ // CHECK-SPARCV9: "{{.*}}ld{{(.exe)?}}"
+ // CHECK-SPARCV9: "-m" "elf64_sparc"
++// CHECK-SPARCV9: "-dynamic-linker" "/lib64/ld-linux.so.2"
+ //
+ // Thoroughly exercise the Debian multiarch environment.
+ // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
OpenPOWER on IntegriCloud