Author: martell Date: Sat Nov 21 23:40:06 2015 New Revision: 253813 URL: http://llvm.org/viewvc/llvm-project?rev=253813&view=rev Log: 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. Modified: cfe/trunk/lib/Driver/Tools.cpp Modified: cfe/trunk/lib/Driver/Tools.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=253813&r1=253812&r2=253813&view=diff ============================================================================== --- cfe/trunk/lib/Driver/Tools.cpp (original) +++ cfe/trunk/lib/Driver/Tools.cpp Sat Nov 21 23:40:06 2015 @@ -9478,7 +9478,14 @@ void MinGW::Linker::ConstructJob(Compila 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; } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits