diff --git a/src/runtime/os1_nacl.go b/src/runtime/os1_nacl.go index 622755119d0..feea4966529 100644 --- a/src/runtime/os1_nacl.go +++ b/src/runtime/os1_nacl.go @@ -56,6 +56,13 @@ func osinit() { //nacl_exception_handler(funcPC(sigtramp), nil); } +func signame(sig uint32) string { + if sig >= uint32(len(sigtable)) { + return "" + } + return sigtable[sig].name +} + func crash() { *(*int32)(nil) = 0 } diff --git a/src/runtime/os1_plan9.go b/src/runtime/os1_plan9.go index eb7a0c6481f..6c7e36d0620 100644 --- a/src/runtime/os1_plan9.go +++ b/src/runtime/os1_plan9.go @@ -286,3 +286,10 @@ func _atoi(b []byte) int { } return n } + +func signame(sig uint32) string { + if sig >= uint32(len(sigtable)) { + return "" + } + return sigtable[sig].name +} diff --git a/src/runtime/panic.go b/src/runtime/panic.go index 382a20e4e70..60b277d52cd 100644 --- a/src/runtime/panic.go +++ b/src/runtime/panic.go @@ -641,7 +641,13 @@ var deadlock mutex func dopanic_m(gp *g, pc, sp uintptr) { if gp.sig != 0 { - print("[signal ", hex(gp.sig), " code=", hex(gp.sigcode0), " addr=", hex(gp.sigcode1), " pc=", hex(gp.sigpc), "]\n") + signame := signame(gp.sig) + if signame != "" { + print("[signal ", signame) + } else { + print("[signal ", hex(gp.sig)) + } + print(" code=", hex(gp.sigcode0), " addr=", hex(gp.sigcode1), " pc=", hex(gp.sigpc), "]\n") } level, all, docrash := gotraceback() diff --git a/src/runtime/signal_unix.go b/src/runtime/signal_unix.go index 5ce2380daa2..f59c9b95497 100644 --- a/src/runtime/signal_unix.go +++ b/src/runtime/signal_unix.go @@ -12,3 +12,10 @@ import _ "unsafe" // for go:linkname func os_sigpipe() { systemstack(sigpipe) } + +func signame(sig uint32) string { + if sig >= uint32(len(sigtable)) { + return "" + } + return sigtable[sig].name +} diff --git a/src/runtime/signal_windows.go b/src/runtime/signal_windows.go index d54dbf76163..298dcc96a07 100644 --- a/src/runtime/signal_windows.go +++ b/src/runtime/signal_windows.go @@ -209,6 +209,10 @@ func raisebadsignal(sig int32) { badsignal2() } +func signame(sig uint32) string { + return "" +} + func crash() { // TODO: This routine should do whatever is needed // to make the Windows program abort/crash as it