| Index: lib/Support/Unix/Signals.inc
|
| diff --git a/lib/Support/Unix/Signals.inc b/lib/Support/Unix/Signals.inc
|
| index e8f4643dc8a761c93d9188d42809f9e7135fd208..fc12331c4153f559c6f1e8951dec5c2ce2437396 100644
|
| --- a/lib/Support/Unix/Signals.inc
|
| +++ b/lib/Support/Unix/Signals.inc
|
| @@ -93,6 +93,7 @@ static struct {
|
|
|
|
|
| static void RegisterHandler(int Signal) {
|
| +#if !defined(__native_client__)
|
| assert(NumRegisteredSignals <
|
| sizeof(RegisteredSignalInfo)/sizeof(RegisteredSignalInfo[0]) &&
|
| "Out of space for signal handlers!");
|
| @@ -108,6 +109,7 @@ static void RegisterHandler(int Signal) {
|
| &RegisteredSignalInfo[NumRegisteredSignals].SA);
|
| RegisteredSignalInfo[NumRegisteredSignals].SigNo = Signal;
|
| ++NumRegisteredSignals;
|
| +#endif // (__native_client__)
|
| }
|
|
|
| static void RegisterHandlers() {
|
| @@ -119,11 +121,13 @@ static void RegisterHandlers() {
|
| }
|
|
|
| static void UnregisterHandlers() {
|
| +#if !defined(__native_client__)
|
| // Restore all of the signal handlers to how they were before we showed up.
|
| for (unsigned i = 0, e = NumRegisteredSignals; i != e; ++i)
|
| sigaction(RegisteredSignalInfo[i].SigNo,
|
| &RegisteredSignalInfo[i].SA, nullptr);
|
| NumRegisteredSignals = 0;
|
| +#endif // (__native_client__)
|
| }
|
|
|
|
|
| @@ -167,10 +171,12 @@ static RETSIGTYPE SignalHandler(int Sig) {
|
| // instead of recursing in the signal handler.
|
| UnregisterHandlers();
|
|
|
| +#if !defined(__native_client__)
|
| // Unmask all potentially blocked kill signals.
|
| sigset_t SigMask;
|
| sigfillset(&SigMask);
|
| sigprocmask(SIG_UNBLOCK, &SigMask, nullptr);
|
| +#endif
|
|
|
| {
|
| unique_lock<SmartMutex<true>> Guard(*SignalsMutex);
|
|
|