forked from OSchip/llvm-project
Vary Windows toolchain selection by -fuse-ld
Summary: This change allows binutils to be used for linking with MSVC. Currently, when using an MSVC target and `-fuse-ld=bfd`, the driver produces an invalid linker invocation. Reviewers: rnk, compnerd Reviewed By: compnerd Subscribers: smeenai, cfe-commits Differential Revision: https://reviews.llvm.org/D39509 llvm-svn: 317511
This commit is contained in:
parent
8917647333
commit
f96bedfce3
|
@ -3880,7 +3880,13 @@ const ToolChain &Driver::getToolChain(const ArgList &Args,
|
|||
break;
|
||||
case llvm::Triple::MSVC:
|
||||
case llvm::Triple::UnknownEnvironment:
|
||||
TC = llvm::make_unique<toolchains::MSVCToolChain>(*this, Target, Args);
|
||||
if (Args.getLastArgValue(options::OPT_fuse_ld_EQ)
|
||||
.startswith_lower("bfd"))
|
||||
TC = llvm::make_unique<toolchains::CrossWindowsToolChain>(
|
||||
*this, Target, Args);
|
||||
else
|
||||
TC =
|
||||
llvm::make_unique<toolchains::MSVCToolChain>(*this, Target, Args);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
|
|
@ -67,3 +67,29 @@
|
|||
// RUN: -gcc-toolchain %S/Inputs/basic_android_tree 2>&1 \
|
||||
// RUN: | FileCheck %s -check-prefix=CHECK-ANDROID-ARM-GOLD-TC
|
||||
// CHECK-ANDROID-ARM-GOLD-TC: Inputs/basic_android_tree/lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin{{/|\\+}}ld.gold
|
||||
|
||||
|
||||
// RUN: %clang %s -### -fuse-ld=link \
|
||||
// RUN: -target i686-unknown-windows-msvc 2>&1 \
|
||||
// RUN: | FileCheck %s --check-prefix CHECK-WINDOWS-MSVC-LINK
|
||||
// CHECK-WINDOWS-MSVC-LINK: "{{.*}}link.exe"
|
||||
// CHECK-WINDOWS-MSVC-LINK-SAME: "-out:{{.*}}"
|
||||
|
||||
// RUN: %clang %s -### -fuse-ld=lld \
|
||||
// RUN: -target i686-unknown-windows-msvc 2>&1 \
|
||||
// RUN: | FileCheck %s --check-prefix CHECK-WINDOWS-MSVC-LLD
|
||||
// CHECK-WINDOWS-MSVC-LLD: "{{.*}}lld-link"
|
||||
// CHECK-WINDOWS-MSVC-LLD-SAME: "-out:{{.*}}"
|
||||
|
||||
// RUN: %clang %s -### -fuse-ld=lld-link \
|
||||
// RUN: -target i686-unknown-windows-msvc 2>&1 \
|
||||
// RUN: | FileCheck %s --check-prefix CHECK-WINDOWS-MSVC-LLD-LINK
|
||||
// CHECK-WINDOWS-MSVC-LLD-LINK: "{{.*}}lld-link"
|
||||
// CHECK-WINDOWS-MSVC-LLD-LINK-SAME: "-out:{{.*}}"
|
||||
|
||||
// RUN: %clang %s -### -fuse-ld=bfd \
|
||||
// RUN: -target i686-unknown-windows-msvc \
|
||||
// RUN: -B %S/Inputs/Windows/usr/bin 2>&1 \
|
||||
// RUN: | FileCheck %s --check-prefix CHECK-WINDOWS-MSVC-BFD
|
||||
// CHECK-WINDOWS-MSVC-BFD: "{{.*}}ld.bfd"
|
||||
// CHECK-WINDOWS-MSVC-BFD-SAME: "-o"
|
||||
|
|
Loading…
Reference in New Issue