From aac044e35cd384474e8511082094d889371c0339 Mon Sep 17 00:00:00 2001 From: Martell Malone Date: Sun, 22 Nov 2015 05:40:06 +0000 Subject: Driver: Specifically tell the linker the target for mingw-w64 Cross compiling from linux and OSX results in Error: Exec format. This is because the linker is expecting ELF formated objects. By passing the target we can explicitly tell the linker that it should be linking COFF objects regardless of the host. llvm-svn: 253813 --- clang/lib/Driver/Tools.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'clang/lib/Driver/Tools.cpp') diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp index 9efaaad5558..acf2cbcf1c2 100644 --- a/clang/lib/Driver/Tools.cpp +++ b/clang/lib/Driver/Tools.cpp @@ -9478,7 +9478,14 @@ void MinGW::Linker::ConstructJob(Compilation &C, const JobAction &JA, StringRef LinkerName = Args.getLastArgValue(options::OPT_fuse_ld_EQ, "ld"); if (LinkerName.equals_lower("lld")) { CmdArgs.push_back("-flavor"); - CmdArgs.push_back("old-gnu"); + CmdArgs.push_back("gnu"); + CmdArgs.push_back("-target"); + if (TC.getArch() == llvm::Triple::x86) + CmdArgs.push_back("i686--windows-gnu"); + if (TC.getArch() == llvm::Triple::x86_64) + CmdArgs.push_back("x86_64--windows-gnu"); + if (TC.getArch() == llvm::Triple::arm) + CmdArgs.push_back("armv7--windows-gnu"); } else if (!LinkerName.equals_lower("ld")) { D.Diag(diag::err_drv_unsupported_linker) << LinkerName; } -- cgit v1.2.3