Fix for bugpoint -remote-client
authorViktor Kutuzov <vkutuzov@accesssoftek.com>
Tue, 14 Jul 2009 19:10:55 +0000 (19:10 +0000)
committerViktor Kutuzov <vkutuzov@accesssoftek.com>
Tue, 14 Jul 2009 19:10:55 +0000 (19:10 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75665 91177308-0d34-0410-b5e6-96231b3b80d8

tools/bugpoint/ToolRunner.cpp

index e00a2b93a0a8f2e36339cb70875297c08c23d5d3..503a5dda136a62551532c815d71a84d54e0b0395 100644 (file)
@@ -635,6 +635,7 @@ int GCC::ExecuteProgram(const std::string &ProgramFile,
 
   std::vector<const char*> ProgramArgs;
 
+  std::string Exec;
   if (RemoteClientPath.isEmpty())
     ProgramArgs.push_back(OutputBinary.c_str());
   else {
@@ -650,10 +651,10 @@ int GCC::ExecuteProgram(const std::string &ProgramFile,
       ProgramArgs.push_back(RemoteExtra.c_str());
     }
 
+    // Full path to the binary
     char* env_pwd = getenv("PWD");
-    std::string Exec = "cd ";
     Exec += env_pwd;
-    Exec += "; ./";
+    Exec += "/";
     Exec += OutputBinary.c_str();
     ProgramArgs.push_back(Exec.c_str());
   }
@@ -673,14 +674,21 @@ int GCC::ExecuteProgram(const std::string &ProgramFile,
 
   FileRemover OutputBinaryRemover(OutputBinary);
 
-  if (RemoteClientPath.isEmpty())
+  if (RemoteClientPath.isEmpty()) {
+    DEBUG(std::cerr << "<run locally>" << std::flush;);
     return RunProgramWithTimeout(OutputBinary, &ProgramArgs[0],
         sys::Path(InputFile), sys::Path(OutputFile), sys::Path(OutputFile),
         Timeout, MemoryLimit);
-  else
-    return RunProgramWithTimeout(sys::Path(RemoteClientPath), &ProgramArgs[0],
-        sys::Path(InputFile), sys::Path(OutputFile), sys::Path(OutputFile),
-        Timeout, MemoryLimit);
+  } else {
+    std::cout << "<run remotely>" << std::flush;
+    int RemoteClientStatus = RunProgramWithTimeout(sys::Path(RemoteClientPath),
+        &ProgramArgs[0], sys::Path(InputFile), sys::Path(OutputFile),
+        sys::Path(OutputFile), Timeout, MemoryLimit);
+    if (RemoteClientStatus != 0) {
+      std::cerr << "Remote Client failed with an error: " <<
+        RemoteClientStatus << ".\n" << std::flush;
+    }
+  }
 }
 
 int GCC::MakeSharedObject(const std::string &InputFile, FileType fileType,