Move helper function here.
authorChris Lattner <sabre@nondot.org>
Sun, 13 Feb 2005 23:13:47 +0000 (23:13 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 13 Feb 2005 23:13:47 +0000 (23:13 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20168 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Support/ToolRunner.cpp
tools/bugpoint/ToolRunner.cpp

index a07046a0d06126f2126b346a0ab620e96bd457b1..c68bd4215781a507afb94ba09328b9e1480280bc 100644 (file)
@@ -14,6 +14,7 @@
 #define DEBUG_TYPE "toolrunner"
 #include "llvm/Support/ToolRunner.h"
 #include "llvm/Config/config.h"   // for HAVE_LINK_R
+#include "llvm/System/Program.h"
 #include "llvm/Support/Debug.h"
 #include "llvm/Support/FileUtilities.h"
 #include <fstream>
@@ -22,6 +23,26 @@ using namespace llvm;
 
 ToolExecutionError::~ToolExecutionError() throw() { }
 
+/// RunProgramWithTimeout - This function provides an alternate interface to the
+/// sys::Program::ExecuteAndWait interface.
+/// @see sys:Program::ExecuteAndWait
+static int RunProgramWithTimeout(const sys::Path &ProgramPath,
+                                 const char **Args,
+                                 const sys::Path &StdInFile,
+                                 const sys::Path &StdOutFile,
+                                 const sys::Path &StdErrFile,
+                                 unsigned NumSeconds = 0) {
+  const sys::Path* redirects[3];
+  redirects[0] = &StdInFile;
+  redirects[1] = &StdOutFile;
+  redirects[2] = &StdErrFile;
+  
+  return 
+    sys::Program::ExecuteAndWait(ProgramPath, Args, 0, redirects, NumSeconds);
+}
+
+
+
 static void ProcessFailure(sys::Path ProgPath, const char** Args) {
   std::ostringstream OS;
   OS << "\nError running tool:\n ";
@@ -370,6 +391,10 @@ int GCC::ExecuteProgram(const std::string &ProgramFile,
   sys::Path OutputBinary (ProgramFile+".gcc.exe");
   OutputBinary.makeUnique();
   GCCArgs.push_back(OutputBinary.c_str()); // Output to the right file...
+  GCCArgs.push_back("-L/home/vadve/shared/localtools/x86/lib");
+  GCCArgs.push_back("-lf2c");                // Hard-code the math library...
+  GCCArgs.push_back("-lpng");                // Hard-code the math library...
+  GCCArgs.push_back("-lz");                // Hard-code the math library...
   GCCArgs.push_back("-lm");                // Hard-code the math library...
   GCCArgs.push_back("-O2");                // Optimize the program a bit...
 #if defined (HAVE_LINK_R)
@@ -385,6 +410,9 @@ int GCC::ExecuteProgram(const std::string &ProgramFile,
   }
 
   std::vector<const char*> ProgramArgs;
+  //ProgramArgs.push_back("valgrind");
+  //ProgramArgs.push_back("--tool=memcheck");
+
   ProgramArgs.push_back(OutputBinary.c_str());
   // Add optional parameters to the running program from Argv
   for (unsigned i=0, e = Args.size(); i != e; ++i)
index a07046a0d06126f2126b346a0ab620e96bd457b1..c68bd4215781a507afb94ba09328b9e1480280bc 100644 (file)
@@ -14,6 +14,7 @@
 #define DEBUG_TYPE "toolrunner"
 #include "llvm/Support/ToolRunner.h"
 #include "llvm/Config/config.h"   // for HAVE_LINK_R
+#include "llvm/System/Program.h"
 #include "llvm/Support/Debug.h"
 #include "llvm/Support/FileUtilities.h"
 #include <fstream>
@@ -22,6 +23,26 @@ using namespace llvm;
 
 ToolExecutionError::~ToolExecutionError() throw() { }
 
+/// RunProgramWithTimeout - This function provides an alternate interface to the
+/// sys::Program::ExecuteAndWait interface.
+/// @see sys:Program::ExecuteAndWait
+static int RunProgramWithTimeout(const sys::Path &ProgramPath,
+                                 const char **Args,
+                                 const sys::Path &StdInFile,
+                                 const sys::Path &StdOutFile,
+                                 const sys::Path &StdErrFile,
+                                 unsigned NumSeconds = 0) {
+  const sys::Path* redirects[3];
+  redirects[0] = &StdInFile;
+  redirects[1] = &StdOutFile;
+  redirects[2] = &StdErrFile;
+  
+  return 
+    sys::Program::ExecuteAndWait(ProgramPath, Args, 0, redirects, NumSeconds);
+}
+
+
+
 static void ProcessFailure(sys::Path ProgPath, const char** Args) {
   std::ostringstream OS;
   OS << "\nError running tool:\n ";
@@ -370,6 +391,10 @@ int GCC::ExecuteProgram(const std::string &ProgramFile,
   sys::Path OutputBinary (ProgramFile+".gcc.exe");
   OutputBinary.makeUnique();
   GCCArgs.push_back(OutputBinary.c_str()); // Output to the right file...
+  GCCArgs.push_back("-L/home/vadve/shared/localtools/x86/lib");
+  GCCArgs.push_back("-lf2c");                // Hard-code the math library...
+  GCCArgs.push_back("-lpng");                // Hard-code the math library...
+  GCCArgs.push_back("-lz");                // Hard-code the math library...
   GCCArgs.push_back("-lm");                // Hard-code the math library...
   GCCArgs.push_back("-O2");                // Optimize the program a bit...
 #if defined (HAVE_LINK_R)
@@ -385,6 +410,9 @@ int GCC::ExecuteProgram(const std::string &ProgramFile,
   }
 
   std::vector<const char*> ProgramArgs;
+  //ProgramArgs.push_back("valgrind");
+  //ProgramArgs.push_back("--tool=memcheck");
+
   ProgramArgs.push_back(OutputBinary.c_str());
   // Add optional parameters to the running program from Argv
   for (unsigned i=0, e = Args.size(); i != e; ++i)