#define LLVM_SUPPORT_SIGNALS_H
#include "llvm/Support/Path.h"
-#include "llvm/Support/PathV1.h"
#include <cstdio>
namespace llvm {
/// This function registers signal handlers to ensure that if a signal gets
/// delivered that the named file is removed.
/// @brief Remove a file if a fatal signal occurs.
- bool RemoveFileOnSignal(const Path &Filename, std::string* ErrMsg = 0);
-
- inline bool RemoveFileOnSignal(StringRef Filename, std::string* ErrMsg = 0) {
- return RemoveFileOnSignal(sys::Path(Filename), ErrMsg);
- }
+ bool RemoveFileOnSignal(StringRef Filename, std::string* ErrMsg = 0);
/// This function removes a file from the list of files to be removed on
/// signal delivery.
- void DontRemoveFileOnSignal(const Path &Filename);
+ void DontRemoveFileOnSignal(StringRef Filename);
/// When an error signal (such as SIBABRT or SIGSEGV) is delivered to the
/// process, print a stack trace and then exit.
return true;
// Make sure the temporary gets removed if we crash
- sys::RemoveFileOnSignal(TmpArchive);
+ sys::RemoveFileOnSignal(TmpArchive.str());
// Create archive file for output.
std::ios::openmode io_mode = std::ios::out | std::ios::trunc |
// mmapped data
if (FinalFilePath.createTemporaryFileOnDisk(ErrMsg))
return true;
- sys::RemoveFileOnSignal(FinalFilePath);
+ sys::RemoveFileOnSignal(FinalFilePath.str());
std::ofstream FinalFile(FinalFilePath.c_str(), io_mode);
if (!FinalFile.is_open() || FinalFile.bad()) {
#include "llvm/Support/ELF.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/MemoryBuffer.h"
+#include "llvm/Support/PathV1.h"
#include "llvm/Support/Signals.h"
#include "llvm/Support/SourceMgr.h"
using namespace llvm;
//===----------------------------------------------------------------------===//
#include "llvm/Support/ToolOutputFile.h"
+#include "llvm/Support/PathV1.h"
#include "llvm/Support/Signals.h"
using namespace llvm;
: Filename(filename), Keep(false) {
// Arrange for the file to be deleted if the process is killed.
if (Filename != "-")
- sys::RemoveFileOnSignal(sys::Path(Filename));
+ sys::RemoveFileOnSignal(Filename);
}
tool_output_file::CleanupInstaller::~CleanupInstaller() {
// Ok, the file is successfully written and closed, or deleted. There's no
// further need to clean it up on signals.
if (Filename != "-")
- sys::DontRemoveFileOnSignal(sys::Path(Filename));
+ sys::DontRemoveFileOnSignal(Filename);
}
tool_output_file::tool_output_file(const char *filename, std::string &ErrorInfo,
}
// RemoveFileOnSignal - The public API
-bool llvm::sys::RemoveFileOnSignal(const sys::Path &Filename,
+bool llvm::sys::RemoveFileOnSignal(StringRef Filename,
std::string* ErrMsg) {
SignalsMutex.acquire();
std::string *OldPtr = FilesToRemove.empty() ? 0 : &FilesToRemove[0];
- FilesToRemove.push_back(Filename.str());
+ FilesToRemove.push_back(Filename);
// We want to call 'c_str()' on every std::string in this vector so that if
// the underlying implementation requires a re-allocation, it happens here
}
// DontRemoveFileOnSignal - The public API
-void llvm::sys::DontRemoveFileOnSignal(const sys::Path &Filename) {
+void llvm::sys::DontRemoveFileOnSignal(StringRef Filename) {
SignalsMutex.acquire();
std::vector<std::string>::reverse_iterator RI =
- std::find(FilesToRemove.rbegin(), FilesToRemove.rend(), Filename.str());
+ std::find(FilesToRemove.rbegin(), FilesToRemove.rend(), Filename);
std::vector<std::string>::iterator I = FilesToRemove.end();
if (RI != FilesToRemove.rend())
I = FilesToRemove.erase(RI.base()-1);
//
//===----------------------------------------------------------------------===//
+#include "llvm/Support/PathV1.h"
+
#include "Windows.h"
#include <algorithm>
#include <stdio.h>
// InterruptFunction - The function to call if ctrl-c is pressed.
static void (*InterruptFunction)() = 0;
-static std::vector<llvm::sys::Path> *FilesToRemove = NULL;
+static std::vector<std::string> *FilesToRemove = NULL;
static std::vector<std::pair<void(*)(void*), void*> > *CallBacksToRun = 0;
static bool RegisteredUnhandledExceptionFilter = false;
static bool CleanupExecuted = false;
}
// RemoveFileOnSignal - The public API
-bool sys::RemoveFileOnSignal(const sys::Path &Filename, std::string* ErrMsg) {
+bool sys::RemoveFileOnSignal(StringRef Filename, std::string* ErrMsg) {
RegisterHandler();
if (CleanupExecuted) {
}
if (FilesToRemove == NULL)
- FilesToRemove = new std::vector<sys::Path>;
+ FilesToRemove = new std::vector<std::string>;
FilesToRemove->push_back(Filename);
}
// DontRemoveFileOnSignal - The public API
-void sys::DontRemoveFileOnSignal(const sys::Path &Filename) {
+void sys::DontRemoveFileOnSignal(StringRef Filename) {
if (FilesToRemove == NULL)
return;
RegisterHandler();
FilesToRemove->push_back(Filename);
- std::vector<sys::Path>::reverse_iterator I =
+ std::vector<std::string>::reverse_iterator I =
std::find(FilesToRemove->rbegin(), FilesToRemove->rend(), Filename);
if (I != FilesToRemove->rend())
FilesToRemove->erase(I.base()-1);
if (FilesToRemove != NULL)
while (!FilesToRemove->empty()) {
- FilesToRemove->back().eraseFromDisk();
+ sys::Path(FilesToRemove->back()).eraseFromDisk();
FilesToRemove->pop_back();
}
#include "llvm/Support/Debug.h"
#include "llvm/Support/FileUtilities.h"
#include "llvm/Support/Path.h"
+#include "llvm/Support/PathV1.h"
#include "llvm/Support/Signals.h"
#include "llvm/Support/ToolOutputFile.h"
#include "llvm/Transforms/IPO.h"
EmitProgressBitcode(M, "basicblockextractfail", true);
return 0;
}
- sys::RemoveFileOnSignal(uniqueFilename);
+ sys::RemoveFileOnSignal(uniqueFilename.str());
std::string ErrorInfo;
tool_output_file BlocksToNotExtractFile(uniqueFilename.c_str(), ErrorInfo);
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/ManagedStatic.h"
#include "llvm/Support/Path.h"
+#include "llvm/Support/PathV1.h"
#include "llvm/Support/PrettyStackTrace.h"
#include "llvm/Support/Signals.h"
#include "llvm/Support/SourceMgr.h"
#include "llvm/Support/FormattedStream.h"
#include "llvm/Support/Host.h"
#include "llvm/Support/MemoryBuffer.h"
+#include "llvm/Support/PathV1.h"
#include "llvm/Support/Signals.h"
#include "llvm/Support/TargetRegistry.h"
#include "llvm/Support/TargetSelect.h"
uniqueObjPath.eraseFromDisk();
return true;
}
- sys::RemoveFileOnSignal(uniqueObjPath);
+ sys::RemoveFileOnSignal(uniqueObjPath.str());
// generate object file
bool genResult = false;