--- ./tools.orig/clang/lib/Driver/ToolChains.cpp +++ ./tools/clang/lib/Driver/ToolChains.cpp @@ -1273,6 +1273,7 @@ /// Linux toolchain (very bare-bones at the moment). enum LinuxDistro { + AlpineLinux, ArchLinux, DebianLenny, DebianSqueeze, @@ -1380,6 +1381,9 @@ if (!llvm::sys::fs::exists("/etc/arch-release", Exists) && Exists) return ArchLinux; + if (!llvm::sys::fs::exists("/etc/alpine-release", Exists) && Exists) + return AlpineLinux; + return UnknownDistro; } @@ -1432,6 +1436,9 @@ else if (!llvm::sys::fs::exists("/usr/lib/gcc/x86_64-manbo-linux-gnu", Exists) && Exists) GccTriple = "x86_64-manbo-linux-gnu"; + else if (!llvm::sys::fs::exists("/usr/lib/gcc/x86_64-alpine-linux-uclibc", + Exists) && Exists) + GccTriple = "x86_64-alpine-linux-uclibc"; } else if (Arch == llvm::Triple::x86) { if (!llvm::sys::fs::exists("/usr/lib/gcc/i686-linux-gnu", Exists) && Exists) GccTriple = "i686-linux-gnu"; @@ -1447,9 +1454,13 @@ else if (!llvm::sys::fs::exists("/usr/lib/gcc/i586-suse-linux", Exists) && Exists) GccTriple = "i586-suse-linux"; + else if (!llvm::sys::fs::exists("/usr/lib/gcc/i486-alpine-linux-uclibc", Exists) && + Exists) + GccTriple = "i486-alpine-linux-uclibc"; } - const char* GccVersions[] = {"4.5.2", "4.5.1", "4.5", "4.4.5", "4.4.4", + const char* GccVersions[] = {"4.6.1", "4.6.0", + "4.5.2", "4.5.1", "4.5", "4.4.5", "4.4.4", "4.4.3", "4.4", "4.3.4", "4.3.3", "4.3.2", "4.3", "4.2.4", "4.2.3", "4.2.2", "4.2.1", "4.2"}; @@ -1513,7 +1524,7 @@ Distro == UbuntuKarmic) ExtraOpts.push_back("--build-id"); - if (Distro == ArchLinux) + if (Distro == ArchLinux || Distro == AlpineLinux) Lib = "lib"; Paths.push_back(Base + Suffix); --- ./tools.orig/clang/lib/Driver/Tools.cpp +++ ./tools/clang/lib/Driver/Tools.cpp @@ -3621,12 +3621,12 @@ !Args.hasArg(options::OPT_shared))) { CmdArgs.push_back("-dynamic-linker"); if (ToolChain.getArch() == llvm::Triple::x86) - CmdArgs.push_back("/lib/ld-linux.so.2"); + CmdArgs.push_back("/lib/ld-uClibc.so.0.9.32"); else if (ToolChain.getArch() == llvm::Triple::arm || ToolChain.getArch() == llvm::Triple::thumb) CmdArgs.push_back("/lib/ld-linux.so.3"); else - CmdArgs.push_back("/lib64/ld-linux-x86-64.so.2"); + CmdArgs.push_back("/lib/ld64-uClibc.so.0.9.32"); } CmdArgs.push_back("-o");