From 70f684fcf92e5cdd11a3b3fc9bf3519f8b745857 Mon Sep 17 00:00:00 2001 From: Evan Cheng Date: Tue, 9 Sep 2008 06:11:26 +0000 Subject: [PATCH] Allow use of ssh to perform remote execution. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55979 91177308-0d34-0410-b5e6-96231b3b80d8 --- tools/bugpoint/ToolRunner.cpp | 39 ++++++++++++++++++++++------------- tools/bugpoint/ToolRunner.h | 6 +++--- 2 files changed, 28 insertions(+), 17 deletions(-) diff --git a/tools/bugpoint/ToolRunner.cpp b/tools/bugpoint/ToolRunner.cpp index d25ce6c306f..d4cea9fa499 100644 --- a/tools/bugpoint/ToolRunner.cpp +++ b/tools/bugpoint/ToolRunner.cpp @@ -25,12 +25,20 @@ using namespace llvm; namespace { cl::opt - RSHHost("rsh-host", - cl::desc("Remote execution (rsh) host")); + RemoteClient("remote-client", + cl::desc("Remote execution client (rsh/ssh)")); cl::opt - RSHUser("rsh-user", - cl::desc("Remote execution (rsh) user id")); + RemoteHost("remote-host", + cl::desc("Remote execution (rsh/ssh) host")); + + cl::opt + RemoteUser("remote-user", + cl::desc("Remote execution (rsh/ssh) user id")); + + cl::opt + RemoteExtra("remote-extra-options", + cl::desc("Remote execution (rsh/ssh) extra options")); } ToolExecutionError::~ToolExecutionError() throw() { } @@ -597,13 +605,16 @@ int GCC::ExecuteProgram(const std::string &ProgramFile, std::vector ProgramArgs; - if (RSHPath.isEmpty()) + if (RemoteClientPath.isEmpty()) ProgramArgs.push_back(OutputBinary.c_str()); else { - ProgramArgs.push_back(RSHPath.c_str()); - ProgramArgs.push_back(RSHHost.c_str()); + ProgramArgs.push_back(RemoteClientPath.c_str()); + ProgramArgs.push_back(RemoteHost.c_str()); ProgramArgs.push_back("-l"); - ProgramArgs.push_back(RSHUser.c_str()); + ProgramArgs.push_back(RemoteUser.c_str()); + if (!RemoteExtra.empty()) { + ProgramArgs.push_back(RemoteExtra.c_str()); + } char* env_pwd = getenv("PWD"); std::string Exec = "cd "; @@ -628,12 +639,12 @@ int GCC::ExecuteProgram(const std::string &ProgramFile, FileRemover OutputBinaryRemover(OutputBinary); - if (RSHPath.isEmpty()) + if (RemoteClientPath.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], + return RunProgramWithTimeout(sys::Path(RemoteClientPath), &ProgramArgs[0], sys::Path(InputFile), sys::Path(OutputFile), sys::Path(OutputFile), Timeout, MemoryLimit); } @@ -721,10 +732,10 @@ GCC *GCC::create(const std::string &ProgramPath, std::string &Message) { return 0; } - sys::Path RSHPath; - if (!RSHHost.empty()) - RSHPath = FindExecutable("rsh", ProgramPath); + sys::Path RemoteClientPath; + if (!RemoteClient.empty()) + RemoteClientPath = FindExecutable(RemoteClient.c_str(), ProgramPath); Message = "Found gcc: " + GCCPath.toString() + "\n"; - return new GCC(GCCPath, RSHPath); + return new GCC(GCCPath, RemoteClientPath); } diff --git a/tools/bugpoint/ToolRunner.h b/tools/bugpoint/ToolRunner.h index 0cc5426b083..c7ec1c5da63 100644 --- a/tools/bugpoint/ToolRunner.h +++ b/tools/bugpoint/ToolRunner.h @@ -44,9 +44,9 @@ public: // class GCC { sys::Path GCCPath; // The path to the gcc executable - sys::Path RSHPath; // The path to the rsh executable - GCC(const sys::Path &gccPath, const sys::Path &rshPath) - : GCCPath(gccPath), RSHPath(rshPath) { } + sys::Path RemoteClientPath; // The path to the rsh / ssh executable + GCC(const sys::Path &gccPath, const sys::Path &RemotePath) + : GCCPath(gccPath), RemoteClientPath(RemotePath) { } public: enum FileType { AsmFile, CFile }; -- 2.34.1