[PATCH] D34290: [Driver] Do a PATH lookup when using only program name with -no-canonical-prefixes

Petr Hosek via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Jun 16 14:37:58 PDT 2017

phosek updated this revision to Diff 102881.
phosek marked an inline comment as done.
phosek edited the summary of this revision.




Index: tools/driver/driver.cpp
--- tools/driver/driver.cpp
+++ tools/driver/driver.cpp
@@ -53,8 +53,15 @@
 using namespace llvm::opt;
 std::string GetExecutablePath(const char *Argv0, bool CanonicalPrefixes) {
-  if (!CanonicalPrefixes)
-    return Argv0;
+  if (!CanonicalPrefixes) {
+    SmallString<128> ExecutablePath(Argv0);
+    // Do a PATH lookup if Argv0 isn't a valid path.
+    if (!llvm::sys::fs::exists(ExecutablePath))
+      if (llvm::ErrorOr<std::string> P =
+              llvm::sys::findProgramByName(ExecutablePath))
+        ExecutablePath = *P;
+    return ExecutablePath.str();
+  }
   // This just needs to be some symbol in the binary; C++ doesn't
   // allow taking the address of ::main however.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D34290.102881.patch
Type: text/x-patch
Size: 794 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20170616/8b1701ae/attachment.bin>

More information about the cfe-commits mailing list