summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2016-06-14 12:47:24 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2016-06-14 12:47:24 +0000
commit164fe34e98812138b72275c4dab2c7c1db394f79 (patch)
tree454c88b727a8c8645811aab13131b69d9cdb8f2f /clang
parent66a9d07a86765596835e23b309e099689f8e685d (diff)
downloadbcm5719-llvm-164fe34e98812138b72275c4dab2c7c1db394f79.tar.gz
bcm5719-llvm-164fe34e98812138b72275c4dab2c7c1db394f79.zip
Start adding support for Musl.
The two patches together enable clang to support targets like "x86_64-pc-linux-musl" and build binaries against musl-libc instead of glibc. This make it easy for clang to work on some musl-based systems like Alpine Linux and certain flavors of Gentoo. Patch by Lei Zhang. llvm-svn: 272662
Diffstat (limited to 'clang')
-rw-r--r--clang/lib/Driver/ToolChains.cpp2
-rw-r--r--clang/test/Driver/linux-ld.c10
2 files changed, 12 insertions, 0 deletions
diff --git a/clang/lib/Driver/ToolChains.cpp b/clang/lib/Driver/ToolChains.cpp
index eec4174d753..fcc6dfe35d5 100644
--- a/clang/lib/Driver/ToolChains.cpp
+++ b/clang/lib/Driver/ToolChains.cpp
@@ -4152,6 +4152,8 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const {
if (Triple.isAndroid())
return Triple.isArch64Bit() ? "/system/bin/linker64" : "/system/bin/linker";
+ else if (Triple.getEnvironment() == llvm::Triple::Musl)
+ return "/lib/ld-musl-" + Triple.getArchName().str() + ".so.1";
std::string LibDir;
std::string Loader;
diff --git a/clang/test/Driver/linux-ld.c b/clang/test/Driver/linux-ld.c
index 15e500a3aea..871065517ab 100644
--- a/clang/test/Driver/linux-ld.c
+++ b/clang/test/Driver/linux-ld.c
@@ -1571,3 +1571,13 @@
// CHECK-ARMV7EB: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
// CHECK-ARMV7EB: "--be8"
// CHECK-ARMV7EB: "-m" "armelfb_linux_eabi"
+
+// Check dynamic-linker for musl-libc
+// RUN: %clang %s -### -o %t.o 2>&1 \
+// RUN: --target=i386-pc-linux-musl \
+// RUN: | FileCheck --check-prefix=CHECK-MUSL32 %s
+// RUN: %clang %s -### -o %t.o 2>&1 \
+// RUN: --target=x86_64-pc-linux-musl \
+// RUN: | FileCheck --check-prefix=CHECK-MUSL64 %s
+// CHECK-MUSL32: "-dynamic-linker" "/lib/ld-musl-i386.so.1"
+// CHECK-MUSL64: "-dynamic-linker" "/lib/ld-musl-x86_64.so.1"
OpenPOWER on IntegriCloud