Fix a fixme; don't take binaries from the working directory.
authorBenjamin Kramer <benny.kra@googlemail.com>
Tue, 28 Jul 2009 22:08:15 +0000 (22:08 +0000)
committerBenjamin Kramer <benny.kra@googlemail.com>
Tue, 28 Jul 2009 22:08:15 +0000 (22:08 +0000)
This fixes clang on non-darwin platforms if a file called 'ld' or 'as'
is in the working directory. Based on patch by Pawel Worach!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77379 91177308-0d34-0410-b5e6-96231b3b80d8

lib/System/Unix/Program.inc

index d4e88fd6d134bbd50de08f259db5a14b085d973c..7e82ef3f9353839ff7fc0265c6423fafe3ba62ce 100644 (file)
@@ -45,9 +45,9 @@ Program::FindProgramByName(const std::string& progName) {
   Path temp;
   if (!temp.set(progName)) // invalid name
     return Path();
-  // FIXME: have to check for absolute filename - we cannot assume anything
-  // about "." being in $PATH
-  if (temp.canExecute()) // already executable as is
+  // Use the given path verbatim if it contains any slashes; this matches
+  // the behavior of sh(1) and friends.
+  if (progName.find('/') != std::string::npos && temp.canExecute())
     return temp;
 
   // At this point, the file name is valid and its not executable