summaryrefslogtreecommitdiff
path: root/src/runtime/os_openbsd.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtime/os_openbsd.c')
-rw-r--r--src/runtime/os_openbsd.c42
1 files changed, 7 insertions, 35 deletions
diff --git a/src/runtime/os_openbsd.c b/src/runtime/os_openbsd.c
index 59abc97b7..045c3a946 100644
--- a/src/runtime/os_openbsd.c
+++ b/src/runtime/os_openbsd.c
@@ -248,41 +248,6 @@ runtime·unminit(void)
runtime·signalstack(nil, 0);
}
-void
-runtime·sigpanic(void)
-{
- if(!runtime·canpanic(g))
- runtime·throw("unexpected signal during runtime execution");
-
- switch(g->sig) {
- case SIGBUS:
- if(g->sigcode0 == BUS_ADRERR && g->sigcode1 < 0x1000 || g->paniconfault) {
- if(g->sigpc == 0)
- runtime·panicstring("call of nil func value");
- runtime·panicstring("invalid memory address or nil pointer dereference");
- }
- runtime·printf("unexpected fault address %p\n", g->sigcode1);
- runtime·throw("fault");
- case SIGSEGV:
- if((g->sigcode0 == 0 || g->sigcode0 == SEGV_MAPERR || g->sigcode0 == SEGV_ACCERR) && g->sigcode1 < 0x1000 || g->paniconfault) {
- if(g->sigpc == 0)
- runtime·panicstring("call of nil func value");
- runtime·panicstring("invalid memory address or nil pointer dereference");
- }
- runtime·printf("unexpected fault address %p\n", g->sigcode1);
- runtime·throw("fault");
- case SIGFPE:
- switch(g->sigcode0) {
- case FPE_INTDIV:
- runtime·panicstring("integer divide by zero");
- case FPE_INTOVF:
- runtime·panicstring("integer overflow");
- }
- runtime·panicstring("floating point error");
- }
- runtime·panicstring(runtime·sigtab[g->sig].name);
-}
-
uintptr
runtime·memlimit(void)
{
@@ -346,3 +311,10 @@ runtime·unblocksignals(void)
{
runtime·sigprocmask(SIG_SETMASK, sigset_none);
}
+
+#pragma textflag NOSPLIT
+int8*
+runtime·signame(int32 sig)
+{
+ return runtime·sigtab[sig].name;
+}