equal
deleted
inserted
replaced
107 for (int i = 0; i < NUM_SIGNALS; i++) { |
107 for (int i = 0; i < NUM_SIGNALS; i++) { |
108 sigaddset(&newset, SIGNALS[i]); |
108 sigaddset(&newset, SIGNALS[i]); |
109 } |
109 } |
110 sigthreadmask(SIG_UNBLOCK, &newset, NULL); |
110 sigthreadmask(SIG_UNBLOCK, &newset, NULL); |
111 |
111 |
112 VMError err(NULL, sig, NULL, info, ucVoid); |
112 // support safefetch faults in error handling |
|
113 ucontext_t* const uc = (ucontext_t*) ucVoid; |
|
114 address const pc = uc ? os::Aix::ucontext_get_pc(uc) : NULL; |
|
115 if (uc && pc && StubRoutines::is_safefetch_fault(pc)) { |
|
116 os::Aix::ucontext_set_pc(uc, StubRoutines::continuation_for_safefetch_fault(pc)); |
|
117 return; |
|
118 } |
|
119 |
|
120 VMError err(NULL, sig, pc, info, ucVoid); |
113 err.report_and_die(); |
121 err.report_and_die(); |
114 } |
122 } |
115 |
123 |
116 void VMError::reset_signal_handlers() { |
124 void VMError::reset_signal_handlers() { |
117 sigset_t newset; |
125 sigset_t newset; |