729 sigset_t newset; |
729 sigset_t newset; |
730 sigemptyset(&newset); |
730 sigemptyset(&newset); |
731 sigaddset(&newset, sig); |
731 sigaddset(&newset, sig); |
732 sigprocmask(SIG_UNBLOCK, &newset, NULL); |
732 sigprocmask(SIG_UNBLOCK, &newset, NULL); |
733 |
733 |
734 VMError err(t, sig, pc, info, ucVoid); |
734 VMError::report_and_die(t, sig, pc, info, ucVoid); |
735 err.report_and_die(); |
|
736 |
735 |
737 ShouldNotReachHere(); |
736 ShouldNotReachHere(); |
738 return false; |
737 return false; |
739 } |
738 } |
740 |
739 |
863 #elif defined(__OpenBSD__) |
862 #elif defined(__OpenBSD__) |
864 stack_t ss; |
863 stack_t ss; |
865 int rslt = pthread_stackseg_np(pthread_self(), &ss); |
864 int rslt = pthread_stackseg_np(pthread_self(), &ss); |
866 |
865 |
867 if (rslt != 0) |
866 if (rslt != 0) |
868 fatal(err_msg("pthread_stackseg_np failed with err = %d", rslt)); |
867 fatal("pthread_stackseg_np failed with err = %d", rslt); |
869 |
868 |
870 *bottom = (address)((char *)ss.ss_sp - ss.ss_size); |
869 *bottom = (address)((char *)ss.ss_sp - ss.ss_size); |
871 *size = ss.ss_size; |
870 *size = ss.ss_size; |
872 #else |
871 #else |
873 pthread_attr_t attr; |
872 pthread_attr_t attr; |
874 |
873 |
875 int rslt = pthread_attr_init(&attr); |
874 int rslt = pthread_attr_init(&attr); |
876 |
875 |
877 // JVM needs to know exact stack location, abort if it fails |
876 // JVM needs to know exact stack location, abort if it fails |
878 if (rslt != 0) |
877 if (rslt != 0) |
879 fatal(err_msg("pthread_attr_init failed with err = %d", rslt)); |
878 fatal("pthread_attr_init failed with err = %d", rslt); |
880 |
879 |
881 rslt = pthread_attr_get_np(pthread_self(), &attr); |
880 rslt = pthread_attr_get_np(pthread_self(), &attr); |
882 |
881 |
883 if (rslt != 0) |
882 if (rslt != 0) |
884 fatal(err_msg("pthread_attr_get_np failed with err = %d", rslt)); |
883 fatal("pthread_attr_get_np failed with err = %d", rslt); |
885 |
884 |
886 if (pthread_attr_getstackaddr(&attr, (void **)bottom) != 0 || |
885 if (pthread_attr_getstackaddr(&attr, (void **)bottom) != 0 || |
887 pthread_attr_getstacksize(&attr, size) != 0) { |
886 pthread_attr_getstacksize(&attr, size) != 0) { |
888 fatal("Can not locate current stack attributes!"); |
887 fatal("Can not locate current stack attributes!"); |
889 } |
888 } |