diff options
author | Evan Cheng <evan.cheng@apple.com> | 2007-05-03 18:36:15 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2007-05-03 18:36:15 +0000 |
commit | 34e400ebe655160874f27d803811118a168599e1 (patch) | |
tree | 89655df6a9e4fa176485dc742c1b5611c6cdb247 /tools/bugpoint | |
parent | 82493289e0234e0172313e845fb87306cf3687ac (diff) | |
download | external_llvm-34e400ebe655160874f27d803811118a168599e1.zip external_llvm-34e400ebe655160874f27d803811118a168599e1.tar.gz external_llvm-34e400ebe655160874f27d803811118a168599e1.tar.bz2 |
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.cpp | 46 | ||||
-rw-r--r-- | tools/bugpoint/ToolRunner.h | 4 |
2 files changed, 44 insertions, 6 deletions
diff --git a/tools/bugpoint/ToolRunner.cpp b/tools/bugpoint/ToolRunner.cpp index 150155f..cc72667 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 1ebccd8..a4dc915 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 }; |