mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2026-02-13 11:51:38 +01:00
137 lines
5.1 KiB
Diff
137 lines
5.1 KiB
Diff
--- a/include/llvm/ADT/Triple.h
|
|
+++ b/include/llvm/ADT/Triple.h
|
|
@@ -117,7 +117,10 @@
|
|
EABI,
|
|
MachO,
|
|
Android,
|
|
- ELF
|
|
+ ELF,
|
|
+ Musl,
|
|
+ MuslEABI,
|
|
+ MuslEABIHF
|
|
};
|
|
|
|
private:
|
|
--- a/lib/Support/Triple.cpp.orig
|
|
+++ b/lib/Support/Triple.cpp
|
|
@@ -153,6 +153,9 @@ const char *Triple::getEnvironmentTypeName(EnvironmentType Kind) {
|
|
case MachO: return "macho";
|
|
case Android: return "android";
|
|
case ELF: return "elf";
|
|
+ case Musl: return "musl";
|
|
+ case MuslEABI: return "muslgnueabi";
|
|
+ case MuslEABIHF: return "muslgnueabihf";
|
|
}
|
|
|
|
llvm_unreachable("Invalid EnvironmentType!");
|
|
@@ -305,6 +308,9 @@ static Triple::EnvironmentType parseEnvironment(StringRef EnvironmentName) {
|
|
.StartsWith("macho", Triple::MachO)
|
|
.StartsWith("android", Triple::Android)
|
|
.StartsWith("elf", Triple::ELF)
|
|
+ .StartsWith("muslgnueabihf", Triple::MuslEABIHF)
|
|
+ .StartsWith("muslgnueabi", Triple::MuslEABI)
|
|
+ .StartsWith("musl", Triple::Musl)
|
|
.Default(Triple::UnknownEnvironment);
|
|
}
|
|
|
|
--- a/tools/clang/lib/Driver/ToolChains.cpp
|
|
+++ b/tools/clang/lib/Driver/ToolChains.cpp
|
|
@@ -1118,20 +1118,23 @@ void Generic_GCC::GCCInstallationDetector::print(raw_ostream &OS) const {
|
|
static const char *const ARMTriples[] = { "arm-linux-gnueabi",
|
|
"arm-linux-androideabi" };
|
|
static const char *const ARMHFTriples[] = { "arm-linux-gnueabihf",
|
|
- "armv7hl-redhat-linux-gnueabi" };
|
|
+ "armv7hl-redhat-linux-gnueabi",
|
|
+ "armv6-alpine-linux-muslgnueabihf",
|
|
+ "armv7-alpine-linux-muslgnueabihf" };
|
|
|
|
static const char *const X86_64LibDirs[] = { "/lib64", "/lib" };
|
|
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-manbo-linux-gnu", "x86_64-linux-gnu", "x86_64-slackware-linux",
|
|
+ "x86_64-alpine-linux-musl"
|
|
};
|
|
static const char *const X86LibDirs[] = { "/lib32", "/lib" };
|
|
static const char *const X86Triples[] = {
|
|
"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-montavista-linux", "i486-alpine-linux-musl"
|
|
};
|
|
|
|
static const char *const MIPSLibDirs[] = { "/lib" };
|
|
@@ -2166,6 +2169,7 @@ Tool *Solaris::buildLinker() const {
|
|
/// Distribution (very bare-bones at the moment).
|
|
|
|
enum Distro {
|
|
+ AlpineLinux,
|
|
ArchLinux,
|
|
DebianLenny,
|
|
DebianSqueeze,
|
|
@@ -2276,6 +2280,9 @@ static Distro DetectDistro(llvm::Triple::ArchType Arch) {
|
|
if (llvm::sys::fs::exists("/etc/arch-release"))
|
|
return ArchLinux;
|
|
|
|
+ if (llvm::sys::fs::exists("/etc/alpine-release"))
|
|
+ return AlpineLinux;
|
|
+
|
|
return UnknownDistro;
|
|
}
|
|
|
|
--- a/tools/clang/lib/Driver/Tools.cpp
|
|
+++ b/tools/clang/lib/Driver/Tools.cpp
|
|
@@ -6355,16 +6355,28 @@ static StringRef getLinuxDynamicLinker(const ArgList &Args,
|
|
const toolchains::Linux &ToolChain) {
|
|
if (ToolChain.getTriple().getEnvironment() == llvm::Triple::Android)
|
|
return "/system/bin/linker";
|
|
- else if (ToolChain.getArch() == llvm::Triple::x86)
|
|
- return "/lib/ld-linux.so.2";
|
|
- else if (ToolChain.getArch() == llvm::Triple::aarch64)
|
|
+ else if (ToolChain.getArch() == llvm::Triple::x86) {
|
|
+ switch (ToolChain.getTriple().getEnvironment()) {
|
|
+ case llvm::Triple::Musl:
|
|
+ return "/lib/ld-musl-i386.so.1";
|
|
+ default:
|
|
+ return "/lib/ld-linux.so.2";
|
|
+ }
|
|
+ } else if (ToolChain.getArch() == llvm::Triple::aarch64)
|
|
return "/lib/ld-linux-aarch64.so.1";
|
|
else if (ToolChain.getArch() == llvm::Triple::arm ||
|
|
ToolChain.getArch() == llvm::Triple::thumb) {
|
|
- if (ToolChain.getTriple().getEnvironment() == llvm::Triple::GNUEABIHF)
|
|
+ switch (ToolChain.getTriple().getEnvironment()) {
|
|
+ case llvm::Triple::Musl:
|
|
+ case llvm::Triple::MuslEABI:
|
|
+ return "/lib/ld-musl-arm.so.3";
|
|
+ case llvm::Triple::MuslEABIHF:
|
|
+ return "/lib/ld-musl-armhf.so.3";
|
|
+ case llvm::Triple::GNUEABIHF:
|
|
return "/lib/ld-linux-armhf.so.3";
|
|
- else
|
|
+ default:
|
|
return "/lib/ld-linux.so.3";
|
|
+ }
|
|
} else if (ToolChain.getArch() == llvm::Triple::mips ||
|
|
ToolChain.getArch() == llvm::Triple::mipsel)
|
|
return "/lib/ld.so.1";
|
|
@@ -6380,8 +6392,14 @@ static StringRef getLinuxDynamicLinker(const ArgList &Args,
|
|
ToolChain.getArch() == llvm::Triple::ppc64le ||
|
|
ToolChain.getArch() == llvm::Triple::systemz)
|
|
return "/lib64/ld64.so.1";
|
|
- else
|
|
- return "/lib64/ld-linux-x86-64.so.2";
|
|
+ else {
|
|
+ switch (ToolChain.getTriple().getEnvironment()) {
|
|
+ case llvm::Triple::Musl:
|
|
+ return "/lib/ld-musl-x86_64.so.1";
|
|
+ default:
|
|
+ return "/lib64/ld-linux-x86-64.so.2";
|
|
+ }
|
|
+ }
|
|
}
|
|
|
|
void gnutools::Link::ConstructJob(Compilation &C, const JobAction &JA,
|