ScanDirForExecutable on Windows fails to find executables with the "exe" extension...
authorReid Kleckner <rnk@google.com>
Thu, 10 Sep 2015 23:28:06 +0000 (23:28 +0000)
committerReid Kleckner <rnk@google.com>
Thu, 10 Sep 2015 23:28:06 +0000 (23:28 +0000)
commitf84a11c30196d6e947502d651d52e88fb0b822ef
tree232cf19c7b02686027a8e882ca8b01edfbfbf818
parente5457136e7f4d5ef3bddf4ed62416a7e7967220e
ScanDirForExecutable on Windows fails to find executables with the "exe" extension in name

When the driver tries to locate a program by its name, e.g. a linker, it
scans the paths provided by the toolchain using the ScanDirForExecutable
function. If the lookup fails, the driver uses
llvm::sys::findProgramByName. Unlike llvm::sys::findProgramByName,
ScanDirForExecutable is not aware of file extensions. If the program has
the "exe" extension in its name, which is very common on Windows,
ScanDirForExecutable won't find it under the toolchain-provided paths.

This patch changes the Windows version of the "`can_execute`" function
called by ScanDirForExecutable to respect file extensions, similarly to
llvm::sys::findProgramByName.

Patch by Oleg Ranevskyy

Reviewers: rnk

Differential Revision: http://reviews.llvm.org/D12711

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247358 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/Support/FileSystem.h
lib/Support/Unix/Path.inc
lib/Support/Windows/Path.inc