summaryrefslogtreecommitdiffstats
path: root/clang/lib/Driver/Tools.cpp
diff options
context:
space:
mode:
authorMartell Malone <martellmalone@gmail.com>2015-11-22 05:40:06 +0000
committerMartell Malone <martellmalone@gmail.com>2015-11-22 05:40:06 +0000
commitaac044e35cd384474e8511082094d889371c0339 (patch)
tree8b414515663feb11449c99e696704e37ffbf8db4 /clang/lib/Driver/Tools.cpp
parent1f38eddee0525df1d3ef738bcb635a88dc51ba5e (diff)
downloadbcm5719-llvm-aac044e35cd384474e8511082094d889371c0339.tar.gz
bcm5719-llvm-aac044e35cd384474e8511082094d889371c0339.zip
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
Diffstat (limited to 'clang/lib/Driver/Tools.cpp')
-rw-r--r--clang/lib/Driver/Tools.cpp9
1 files changed, 8 insertions, 1 deletions
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;
}
OpenPOWER on IntegriCloud