diff options
author | Martell Malone <martellmalone@gmail.com> | 2015-11-22 05:40:06 +0000 |
---|---|---|
committer | Martell Malone <martellmalone@gmail.com> | 2015-11-22 05:40:06 +0000 |
commit | aac044e35cd384474e8511082094d889371c0339 (patch) | |
tree | 8b414515663feb11449c99e696704e37ffbf8db4 /clang/lib/Driver/Tools.cpp | |
parent | 1f38eddee0525df1d3ef738bcb635a88dc51ba5e (diff) | |
download | bcm5719-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.cpp | 9 |
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; } |