mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-01-15 20:51:35 +00:00
[Driver] Allow using a canonical form of '-fuse-ld=' when cross-compiling on Windows.
clang used to require adding an ".exe" suffix when targeting ELF systems on Windows. Differential Revision: https://reviews.llvm.org/D43621 llvm-svn: 326164
This commit is contained in:
parent
8992eddbdf
commit
a49182aa5a
@ -412,7 +412,7 @@ std::string ToolChain::GetLinkerPath() const {
|
||||
if (llvm::sys::path::is_absolute(UseLinker)) {
|
||||
// If we're passed what looks like an absolute path, don't attempt to
|
||||
// second-guess that.
|
||||
if (llvm::sys::fs::exists(UseLinker))
|
||||
if (llvm::sys::fs::can_execute(UseLinker))
|
||||
return UseLinker;
|
||||
} else if (UseLinker.empty() || UseLinker == "ld") {
|
||||
// If we're passed -fuse-ld= with no argument, or with the argument ld,
|
||||
@ -427,7 +427,7 @@ std::string ToolChain::GetLinkerPath() const {
|
||||
LinkerName.append(UseLinker);
|
||||
|
||||
std::string LinkerPath(GetProgramPath(LinkerName.c_str()));
|
||||
if (llvm::sys::fs::exists(LinkerPath))
|
||||
if (llvm::sys::fs::can_execute(LinkerPath))
|
||||
return LinkerPath;
|
||||
}
|
||||
|
||||
|
0
clang/test/Driver/Inputs/fuse_ld_windows/ld.foo.exe
Executable file
0
clang/test/Driver/Inputs/fuse_ld_windows/ld.foo.exe
Executable file
25
clang/test/Driver/fuse-ld-windows.c
Normal file
25
clang/test/Driver/fuse-ld-windows.c
Normal file
@ -0,0 +1,25 @@
|
||||
// REQUIRES: system-windows
|
||||
|
||||
// We used to require adding ".exe" suffix when cross-compiling on Windows.
|
||||
// RUN: %clang %s -### -o %t.o -target i386-unknown-linux \
|
||||
// RUN: -B %S/Inputs/fuse_ld_windows -fuse-ld=foo 2>&1 \
|
||||
// RUN: | FileCheck %s
|
||||
|
||||
// Check that the old variant still works.
|
||||
// RUN: %clang %s -### -o %t.o -target i386-unknown-linux \
|
||||
// RUN: -B %S/Inputs/fuse_ld_windows -fuse-ld=foo.exe 2>&1 \
|
||||
// RUN: | FileCheck %s
|
||||
|
||||
// With the full path, the extension can be omitted, too,
|
||||
// because Windows allows that.
|
||||
// RUN: %clang %s -### -o %t.o -target i386-unknown-linux \
|
||||
// RUN: -fuse-ld=%S/Inputs/fuse_ld_windows/ld.foo 2>&1 \
|
||||
// RUN: | FileCheck %s
|
||||
|
||||
// Check that the full path with the extension works too.
|
||||
// RUN: %clang %s -### -o %t.o -target i386-unknown-linux \
|
||||
// RUN: -fuse-ld=%S/Inputs/fuse_ld_windows/ld.foo.exe 2>&1 \
|
||||
// RUN: | FileCheck %s
|
||||
|
||||
// CHECK-NOT: invalid linker name
|
||||
// CHECK: /Inputs/fuse_ld_windows{{/|\\\\}}ld.foo
|
Loading…
x
Reference in New Issue
Block a user