aboutsummaryrefslogtreecommitdiff
path: root/lib/Support/SystemUtils.cpp
diff options
context:
space:
mode:
authorDan Gohman <gohman@apple.com>2009-08-05 20:21:17 +0000
committerDan Gohman <gohman@apple.com>2009-08-05 20:21:17 +0000
commit197f728d49fa0cc0baa5aadb2b905fbd8c22a81e (patch)
treedc9af5c9dde619ca176b0ad467636902011e0430 /lib/Support/SystemUtils.cpp
parent7b3544ba97a31f21f24a9f923bd2a793df6d46ab (diff)
Fix FindExecutable to use sys::Path::GetMainExecutable instead of
just argv[0]. And remove the code for searching the current working directory and for searching PATH; the point of FindExecutable is not to find whatever version of the executable can be found by searching around, but to find an executable that accompanies the current executable. Update the tools to use sys::Program::FindProgramByName when they want PATH searching. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78240 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Support/SystemUtils.cpp')
-rw-r--r--lib/Support/SystemUtils.cpp23
1 files changed, 8 insertions, 15 deletions
diff --git a/lib/Support/SystemUtils.cpp b/lib/Support/SystemUtils.cpp
index 49a87e405a..09c0b19aa9 100644
--- a/lib/Support/SystemUtils.cpp
+++ b/lib/Support/SystemUtils.cpp
@@ -50,24 +50,17 @@ bool llvm::CheckBitcodeOutputToConsole(std::ostream* stream_to_check,
}
/// FindExecutable - Find a named executable, giving the argv[0] of program
-/// being executed. This allows us to find another LLVM tool if it is built
-/// into the same directory, but that directory is neither the current
-/// directory, nor in the PATH. If the executable cannot be found, return an
-/// empty string. Return the input string if given a full path to an executable.
-///
+/// being executed. This allows us to find another LLVM tool if it is built in
+/// the same directory. If the executable cannot be found, return an
+/// empty string.
+/// @brief Find a named executable.
#undef FindExecutable // needed on windows :(
sys::Path llvm::FindExecutable(const std::string &ExeName,
- const std::string &ProgramPath) {
- // First check if the given name is already a valid path to an executable.
- sys::Path Result(ExeName);
- Result.makeAbsolute();
- if (Result.canExecute())
- return Result;
-
- // Otherwise check the directory that the calling program is in. We can do
+ const char *Argv0, void *MainAddr) {
+ // Check the directory that the calling program is in. We can do
// this if ProgramPath contains at least one / character, indicating that it
// is a relative path to the executable itself.
- Result = ProgramPath;
+ sys::Path Result = sys::Path::GetMainExecutable(Argv0, MainAddr);
Result.eraseComponent();
if (!Result.isEmpty()) {
Result.appendComponent(ExeName);
@@ -75,5 +68,5 @@ sys::Path llvm::FindExecutable(const std::string &ExeName,
return Result;
}
- return sys::Program::FindProgramByName(ExeName);
+ return sys::Path();
}