mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-15 07:34:33 +00:00
Add an interface for unregistering a file from the FilesToRemove list.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112705 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
2ad12a0e2a
commit
41154114f6
@ -29,6 +29,10 @@ namespace sys {
|
||||
/// @brief Remove a file if a fatal signal occurs.
|
||||
bool RemoveFileOnSignal(const Path &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);
|
||||
|
||||
/// When an error signal (such as SIBABRT or SIGSEGV) is delivered to the
|
||||
/// process, print a stack trace and then exit.
|
||||
/// @brief Print a stack trace if a fatal signal occurs.
|
||||
|
@ -182,6 +182,16 @@ bool llvm::sys::RemoveFileOnSignal(const sys::Path &Filename,
|
||||
return false;
|
||||
}
|
||||
|
||||
// DontRemoveFileOnSignal - The public API
|
||||
void llvm::sys::DontRemoveFileOnSignal(const sys::Path &Filename) {
|
||||
SignalsMutex.acquire();
|
||||
std::vector<sys::Path>::reverse_iterator I =
|
||||
std::find(FilesToRemove.rbegin(), FilesToRemove.rend(), Filename);
|
||||
if (I != FilesToRemove.rend())
|
||||
FilesToRemove.erase(I.base()-1);
|
||||
SignalsMutex.release();
|
||||
}
|
||||
|
||||
/// AddSignalHandler - Add a function to be called when a signal is delivered
|
||||
/// to the process. The handler can have a cookie passed to it to identify
|
||||
/// what instance of the handler it is.
|
||||
|
@ -140,6 +140,20 @@ bool sys::RemoveFileOnSignal(const sys::Path &Filename, std::string* ErrMsg) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// DontRemoveFileOnSignal - The public API
|
||||
void sys::DontRemoveFileOnSignal(const sys::Path &Filename) {
|
||||
if (FilesToRemove == NULL)
|
||||
return;
|
||||
|
||||
FilesToRemove->push_back(Filename);
|
||||
std::vector<sys::Path>::reverse_iterator I =
|
||||
std::find(FilesToRemove->rbegin(), FilesToRemove->rend(), Filename);
|
||||
if (I != FilesToRemove->rend())
|
||||
FilesToRemove->erase(I.base()-1);
|
||||
|
||||
LeaveCriticalSection(&CriticalSection);
|
||||
}
|
||||
|
||||
/// PrintStackTraceOnErrorSignal - When an error signal (such as SIBABRT or
|
||||
/// SIGSEGV) is delivered to the process, print a stack trace and then exit.
|
||||
void sys::PrintStackTraceOnErrorSignal() {
|
||||
|
Loading…
x
Reference in New Issue
Block a user