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
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp
index 9efaaad..acf2cbc 100644
--- a/clang/lib/Driver/Tools.cpp
+++ b/clang/lib/Driver/Tools.cpp
@@ -9478,7 +9478,14 @@
   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;
   }