#include "ArchiveInternals.h"
#include "llvm/Bytecode/Reader.h"
-#include "llvm/Support/FileUtilities.h"
#include "llvm/Support/Compressor.h"
#include "llvm/System/Signals.h"
#include <fstream>
#include "ArchiveInternals.h"
#include "llvm/Bytecode/Reader.h"
-#include "llvm/Support/FileUtilities.h"
#include "llvm/Support/Compressor.h"
#include "llvm/System/Signals.h"
#include <fstream>
#include "llvm/Module.h"
#include "llvm/Debugger/SourceFile.h"
#include "llvm/Debugger/SourceLanguage.h"
-#include "llvm/Support/FileUtilities.h"
#include "llvm/Support/SlowOperationInformer.h"
#include "llvm/ADT/STLExtras.h"
#include <iostream>
#include "llvm/Debugger/SourceFile.h"
#include "llvm/Support/SlowOperationInformer.h"
-#include "llvm/Support/FileUtilities.h"
#include <iostream>
#include <cerrno>
#include <fcntl.h>
OS << "\n";
// Rerun the compiler, capturing any error messages to print them.
- std::string ErrorFilename = getUniqueFilename("error_messages");
+ sys::Path ErrorFilename("error_messages");
+ ErrorFilename.makeUnique();
RunProgramWithTimeout(ProgPath, Args, "/dev/null", ErrorFilename.c_str(),
ErrorFilename.c_str());
ErrorFile.close();
}
- removeFile(ErrorFilename);
+ removeFile(ErrorFilename.toString());
throw ToolExecutionError(OS.str());
}
// LLC Implementation of AbstractIntepreter interface
//
void LLC::OutputAsm(const std::string &Bytecode, std::string &OutputAsmFile) {
- OutputAsmFile = getUniqueFilename(Bytecode+".llc.s");
+ sys::Path uniqueFile(Bytecode+".llc.s");
+ uniqueFile.makeUnique();
+ OutputAsmFile = uniqueFile.toString();
std::vector<const char *> LLCArgs;
LLCArgs.push_back (LLCPath.c_str());
void CBE::OutputC(const std::string &Bytecode,
std::string &OutputCFile) {
- OutputCFile = getUniqueFilename(Bytecode+".cbe.c");
+ sys::Path uniqueFile(Bytecode+".cbe.c");
+ uniqueFile.makeUnique();
+ OutputCFile = uniqueFile.toString();
std::vector<const char *> LLCArgs;
LLCArgs.push_back (LLCPath.c_str());
}
GCCArgs.push_back(ProgramFile.c_str()); // Specify the input filename...
GCCArgs.push_back("-o");
- std::string OutputBinary = getUniqueFilename(ProgramFile+".gcc.exe");
+ sys::Path OutputBinary (ProgramFile+".gcc.exe");
+ OutputBinary.makeUnique();
GCCArgs.push_back(OutputBinary.c_str()); // Output to the right file...
GCCArgs.push_back("-lm"); // Hard-code the math library...
GCCArgs.push_back("-O2"); // Optimize the program a bit...
std::cerr << "\n";
);
- FileRemover OutputBinaryRemover(OutputBinary);
- return RunProgramWithTimeout(OutputBinary, &ProgramArgs[0],
+ FileRemover OutputBinaryRemover(OutputBinary.toString());
+ return RunProgramWithTimeout(OutputBinary.toString(), &ProgramArgs[0],
InputFile, OutputFile, OutputFile, Timeout);
}
int GCC::MakeSharedObject(const std::string &InputFile, FileType fileType,
std::string &OutputFile) {
- OutputFile = getUniqueFilename(InputFile+LTDL_SHLIB_EXT);
+ sys::Path uniqueFilename(InputFile+LTDL_SHLIB_EXT);
+ uniqueFilename.makeUnique();
+ OutputFile = uniqueFilename.toString();
+
// Compile the C/asm file into a shared object
const char* GCCArgs[] = {
GCCPath.c_str(),
OS << "\n";
// Rerun the compiler, capturing any error messages to print them.
- std::string ErrorFilename = getUniqueFilename("error_messages");
+ sys::Path ErrorFilename("error_messages");
+ ErrorFilename.makeUnique();
RunProgramWithTimeout(ProgPath, Args, "/dev/null", ErrorFilename.c_str(),
ErrorFilename.c_str());
ErrorFile.close();
}
- removeFile(ErrorFilename);
+ removeFile(ErrorFilename.toString());
throw ToolExecutionError(OS.str());
}
// LLC Implementation of AbstractIntepreter interface
//
void LLC::OutputAsm(const std::string &Bytecode, std::string &OutputAsmFile) {
- OutputAsmFile = getUniqueFilename(Bytecode+".llc.s");
+ sys::Path uniqueFile(Bytecode+".llc.s");
+ uniqueFile.makeUnique();
+ OutputAsmFile = uniqueFile.toString();
std::vector<const char *> LLCArgs;
LLCArgs.push_back (LLCPath.c_str());
void CBE::OutputC(const std::string &Bytecode,
std::string &OutputCFile) {
- OutputCFile = getUniqueFilename(Bytecode+".cbe.c");
+ sys::Path uniqueFile(Bytecode+".cbe.c");
+ uniqueFile.makeUnique();
+ OutputCFile = uniqueFile.toString();
std::vector<const char *> LLCArgs;
LLCArgs.push_back (LLCPath.c_str());
}
GCCArgs.push_back(ProgramFile.c_str()); // Specify the input filename...
GCCArgs.push_back("-o");
- std::string OutputBinary = getUniqueFilename(ProgramFile+".gcc.exe");
+ sys::Path OutputBinary (ProgramFile+".gcc.exe");
+ OutputBinary.makeUnique();
GCCArgs.push_back(OutputBinary.c_str()); // Output to the right file...
GCCArgs.push_back("-lm"); // Hard-code the math library...
GCCArgs.push_back("-O2"); // Optimize the program a bit...
std::cerr << "\n";
);
- FileRemover OutputBinaryRemover(OutputBinary);
- return RunProgramWithTimeout(OutputBinary, &ProgramArgs[0],
+ FileRemover OutputBinaryRemover(OutputBinary.toString());
+ return RunProgramWithTimeout(OutputBinary.toString(), &ProgramArgs[0],
InputFile, OutputFile, OutputFile, Timeout);
}
int GCC::MakeSharedObject(const std::string &InputFile, FileType fileType,
std::string &OutputFile) {
- OutputFile = getUniqueFilename(InputFile+LTDL_SHLIB_EXT);
+ sys::Path uniqueFilename(InputFile+LTDL_SHLIB_EXT);
+ uniqueFilename.makeUnique();
+ OutputFile = uniqueFilename.toString();
+
// Compile the C/asm file into a shared object
const char* GCCArgs[] = {
GCCPath.c_str(),