mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-13 04:30:23 +00:00
Implement sys::SetInterruptFunction on Unix, stub it on win32 so that the
build will not fail git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22578 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
e62321ac41
commit
fa8c292ebd
@ -24,6 +24,9 @@
|
||||
|
||||
namespace {
|
||||
|
||||
/// InterruptFunction - The function to call if ctrl-c is pressed.
|
||||
void (*InterruptFunction)() = 0;
|
||||
|
||||
std::vector<std::string> *FilesToRemove = 0 ;
|
||||
std::vector<llvm::sys::Path> *DirectoriesToRemove = 0;
|
||||
|
||||
@ -116,8 +119,16 @@ RETSIGTYPE SignalHandler(int Sig) {
|
||||
DirectoriesToRemove->pop_back();
|
||||
}
|
||||
|
||||
if (std::find(IntSigs, IntSigsEnd, Sig) != IntSigsEnd)
|
||||
exit(1); // If this is an interrupt signal, exit the program
|
||||
if (std::find(IntSigs, IntSigsEnd, Sig) != IntSigsEnd) {
|
||||
if (InterruptFunction) {
|
||||
void (*IF)() = InterruptFunction;
|
||||
InterruptFunction = 0;
|
||||
IF(); // run the interrupt function.
|
||||
return;
|
||||
} else {
|
||||
exit(1); // If this is an interrupt signal, exit the program
|
||||
}
|
||||
}
|
||||
|
||||
// Otherwise if it is a fault (like SEGV) output the stacktrace to
|
||||
// STDERR (if we can) and reissue the signal to die...
|
||||
@ -134,6 +145,11 @@ void RegisterHandler(int Signal) {
|
||||
|
||||
namespace llvm {
|
||||
|
||||
void sys::SetInterruptFunction(void (*IF)()) {
|
||||
InterruptFunction = IF;
|
||||
RegisterHandler(SIGINT);
|
||||
}
|
||||
|
||||
// RemoveFileOnSignal - The public API
|
||||
void sys::RemoveFileOnSignal(const sys::Path &Filename) {
|
||||
if (FilesToRemove == 0)
|
||||
|
@ -109,6 +109,10 @@ void sys::PrintStackTraceOnErrorSignal() {
|
||||
LeaveCriticalSection(&CriticalSection);
|
||||
}
|
||||
|
||||
|
||||
void sys::SetInterruptFunction(void (*IF)()) {
|
||||
// Currently unimplemented.
|
||||
}
|
||||
}
|
||||
|
||||
static void Cleanup() {
|
||||
|
Loading…
Reference in New Issue
Block a user