summaryrefslogtreecommitdiff
path: root/tools/bugpoint
diff options
context:
space:
mode:
authorEvan Cheng <evan.cheng@apple.com>2007-05-03 18:36:15 +0000
committerEvan Cheng <evan.cheng@apple.com>2007-05-03 18:36:15 +0000
commit34e400ebe655160874f27d803811118a168599e1 (patch)
tree89655df6a9e4fa176485dc742c1b5611c6cdb247 /tools/bugpoint
parent82493289e0234e0172313e845fb87306cf3687ac (diff)
downloadllvm-34e400ebe655160874f27d803811118a168599e1.tar.gz
llvm-34e400ebe655160874f27d803811118a168599e1.tar.bz2
llvm-34e400ebe655160874f27d803811118a168599e1.tar.xz
Added -rsh-host and -rsh-user to support remote execution.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36685 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/bugpoint')
-rw-r--r--tools/bugpoint/ToolRunner.cpp46
-rw-r--r--tools/bugpoint/ToolRunner.h4
2 files changed, 44 insertions, 6 deletions
diff --git a/tools/bugpoint/ToolRunner.cpp b/tools/bugpoint/ToolRunner.cpp
index 150155fc3d..cc726676a3 100644
--- a/tools/bugpoint/ToolRunner.cpp
+++ b/tools/bugpoint/ToolRunner.cpp
@@ -15,6 +15,7 @@
#include "ToolRunner.h"
#include "llvm/Config/config.h" // for HAVE_LINK_R
#include "llvm/System/Program.h"
+#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/FileUtilities.h"
#include <fstream>
@@ -22,6 +23,16 @@
#include <iostream>
using namespace llvm;
+namespace {
+ cl::opt<std::string>
+ RSHHost("rsh-host",
+ cl::desc("Remote execution (rsh) host"));
+
+ cl::opt<std::string>
+ RSHUser("rsh-user",
+ cl::desc("Remote execution (rsh) user id"));
+}
+
ToolExecutionError::~ToolExecutionError() throw() { }
/// RunProgramWithTimeout - This function provides an alternate interface to the
@@ -482,7 +493,22 @@ int GCC::ExecuteProgram(const std::string &ProgramFile,
std::vector<const char*> ProgramArgs;
- ProgramArgs.push_back(OutputBinary.c_str());
+ if (RSHPath.isEmpty())
+ ProgramArgs.push_back(OutputBinary.c_str());
+ else {
+ ProgramArgs.push_back(RSHPath.c_str());
+ ProgramArgs.push_back(RSHHost.c_str());
+ ProgramArgs.push_back("-l");
+ ProgramArgs.push_back(RSHUser.c_str());
+
+ char* env_pwd = getenv("PWD");
+ std::string Exec = "cd ";
+ Exec += env_pwd;
+ Exec += "; ./";
+ Exec += OutputBinary.c_str();
+ ProgramArgs.push_back(Exec.c_str());
+ }
+
// Add optional parameters to the running program from Argv
for (unsigned i=0, e = Args.size(); i != e; ++i)
ProgramArgs.push_back(Args[i].c_str());
@@ -497,9 +523,15 @@ int GCC::ExecuteProgram(const std::string &ProgramFile,
);
FileRemover OutputBinaryRemover(OutputBinary);
- return RunProgramWithTimeout(OutputBinary, &ProgramArgs[0],
- sys::Path(InputFile), sys::Path(OutputFile), sys::Path(OutputFile),
- Timeout, MemoryLimit);
+
+ if (RSHPath.isEmpty())
+ return RunProgramWithTimeout(OutputBinary, &ProgramArgs[0],
+ sys::Path(InputFile), sys::Path(OutputFile), sys::Path(OutputFile),
+ Timeout, MemoryLimit);
+ else
+ return RunProgramWithTimeout(sys::Path(RSHPath), &ProgramArgs[0],
+ sys::Path(InputFile), sys::Path(OutputFile), sys::Path(OutputFile),
+ Timeout, MemoryLimit);
}
int GCC::MakeSharedObject(const std::string &InputFile, FileType fileType,
@@ -583,6 +615,10 @@ GCC *GCC::create(const std::string &ProgramPath, std::string &Message) {
return 0;
}
+ sys::Path RSHPath;
+ if (!RSHHost.empty())
+ RSHPath = FindExecutable("rsh", ProgramPath);
+
Message = "Found gcc: " + GCCPath.toString() + "\n";
- return new GCC(GCCPath);
+ return new GCC(GCCPath, RSHPath);
}
diff --git a/tools/bugpoint/ToolRunner.h b/tools/bugpoint/ToolRunner.h
index 1ebccd860a..a4dc9150ca 100644
--- a/tools/bugpoint/ToolRunner.h
+++ b/tools/bugpoint/ToolRunner.h
@@ -44,7 +44,9 @@ public:
//
class GCC {
sys::Path GCCPath; // The path to the gcc executable
- GCC(const sys::Path &gccPath) : GCCPath(gccPath) { }
+ sys::Path RSHPath; // The path to the rsh executable
+ GCC(const sys::Path &gccPath, const sys::Path &rshPath)
+ : GCCPath(gccPath), RSHPath(rshPath) { }
public:
enum FileType { AsmFile, CFile };